Я научился использовать wxPython для создания диалоговой программы.Как использовать wxPython для создания диалогового окна?
Я попытался следующий код (просто скопированный из WxPython Demo):
import wx
#---------------------------------------------------------------------------
class TestPanel(wx.Panel):
def __init__(self, parent, log):
self.log = log
wx.Panel.__init__(self, parent, -1)
b = wx.Button(self, -1, "Create and Show a DirDialog", (50,50))
self.Bind(wx.EVT_BUTTON, self.OnButton, b)
def OnButton(self, evt):
# In this case we include a "New directory" button.
dlg = wx.DirDialog(self, "Choose a directory:",
style=wx.DD_DEFAULT_STYLE
#| wx.DD_DIR_MUST_EXIST
#| wx.DD_CHANGE_DIR
)
# If the user selects OK, then we process the dialog's data.
# This is done by getting the path data from the dialog - BEFORE
# we destroy it.
if dlg.ShowModal() == wx.ID_OK:
self.log.WriteText('You selected: %s\n' % dlg.GetPath())
# Only destroy a dialog after you're done with it.
dlg.Destroy()
#---------------------------------------------------------------------------
def runTest(frame, nb, log):
win = TestPanel(nb, log)
return win
#---------------------------------------------------------------------------
overview = """\
This class represents the directory chooser dialog. It is used when all you
need from the user is the name of a directory. Data is retrieved via utility
methods; see the <code>DirDialog</code> documentation for specifics.
"""
if __name__ == '__main__':
import sys,os
import run
run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
Я выбежала выше кода, как в Python IDLE
и Apatana Studio 3
. Вот что я получил.
В Python IDLE
, у меня есть:
IDLE Subprocess: no IP port passed in sys.argv.
И в Apatana Studio 3
, у меня есть:
Traceback (most recent call last):
File "C:\Users\User\My Documents\Aptana Studio 3 Workspace\Test Dialogue\main.py", line 61, in import run ImportError: No module named run
Могу ли я знать, что я не прав? Большое спасибо. :)
Привет, Бен. Большое спасибо за очень подробный ответ. Это действительно полезно. Если я могу задать еще один вопрос: что такое 'log' в конструкторе класса' TestPanel'? Когда я запускаю код, после выбора каталога появляется следующее сообщение: «Traceback (последний последний вызов): Файл« P/Project Backups/Python Practice/Examples/Demo_Panel2.py », строка 25, в OnButton self.log.WriteText ('Вы выбрали:'% dlg.GetPath()) AttributeError: объект 'int' не имеет атрибута 'WriteText' '. Я думаю, что эта ошибка указывает на «журнал». Большое спасибо. – ChangeMyName
Этот код скопирован из демонстрационного кода wxpython для DirDialog. Журнал используется для отображения вывода в демо. Вы можете прокомментировать любые ссылки на журнал. – Yoriz
Отличное слежение! Модуль run.py также содержал класс журнала, который показывал вам выбранный вами выбор. Как сказал Йориз, вы можете просто удалить ссылки на журнал. Я решил добавить класс журнала в примерный код выше, чтобы вы могли видеть, как это может вписаться. Он скопирован из run.py, но я изменил класс как класс «нового стиля», а не старый (см. Http://stackoverflow.com/questions/54867/old-style-and-new-style-classes- in-python) и изменил строку в TestPanel из self.log = log to self.log = Log() – Ben