对话框是什么意思)

如题所述

wxPython 对话框
对话窗口或对话框是大多数现代GUI应用程序中不可缺少的一部分。对话的定义是两个或两个以上的人之间的对话。在计算机应用程序中,对话框是一个窗口,用于与应用程序 "对话"。对话框用于输入数据、修改数据、改变应用程序的设置等。对话框是用户与计算机程序之间重要的交流手段。
我们可以使用预定义的对话框,如消息框、字体或颜色对话框,也可以创建自己的自定义对话框。

一个简单的消息框
消息框为用户提供简短的信息。一个很好的例子是一个CD刻录应用程序。当光盘刻录完成后,会弹出一个消息框。
#message_box.pyimport wxclass Example(wx.Frame): def __init__(self, *args, **kwargs): super(Example, self).__init__(*args, **kwargs) self.InitUI() def InitUI(self): wx.CallLater(3000, self.ShowMessage) self.SetSize((300, 200)) self.SetTitle('Message box') self.Centre() def ShowMessage(self): wx.MessageBox('Download completed', 'Info', wx.OK | wx.ICON_INFORMATION)def main(): app = wx.App() ex = Example(None) ex.Show() app.MainLoop()if __name__ == '__main__': main()
code>
这个例子显示的是三秒钟后的消息框
wx.CallLater(3000, self.ShowMessage)
code>
wx.CallLater
code>在三秒后调用一个方法。第一个参数是一个时间值,在这个时间值之后调用一个给定的方法。参数的单位是毫秒。第二个参数是一个要调用的方法。
def ShowMessage(self): wx.MessageBox('Download completed', 'Info', wx.OK | wx.ICON_INFORMATION)
code>
wx.MessageBox
code>显示一个小的对话框窗口。我们提供三个参数:文本信息、标题信息和标志。标志用于显示不同的按钮和图标。在我们的例子中,我们显示一个OK按钮和信息图标。

预定义对话框
wxPython 有几个预定义的对话框。这些对话框用于常见的编程任务,如显示文本、接收输入、加载和保存文件。

消息对话框
消息对话框用于向用户显示消息。它们比我们在前面的例子中看到的简单的消息框更加灵活。它们是可定制的。我们可以改变对话框中显示的图标和按钮。
flag
th>meaning
th>
thead>wx.OKshow OK buttonwx.CANCELshow Cancel buttonwx.YES_NOshow Yes, No buttonswx.YES_DEFAULTmake Yes button the defaultwx.NO_DEFAULTmake No button the defaultwx.ICON_EXCLAMATIONshow an alert iconwx.ICON_ERRORshow an error iconwx.ICON_HANDsame as wx.ICON_ERRORwx.ICON_INFORMATIONshow an info iconwx.ICON_QUESTIONshow a question icon
这些是可以用于
wx.MessageDialog
code>类的flag
#message_dialogs.pyimport wxclass Example(wx.Frame): def __init__(self, *args, **kwargs): super(Example, self).__init__(*args, **kwargs) self.InitUI() def InitUI(self): panel = wx.Panel(self) hbox = wx.BoxSizer() sizer = wx.GridSizer(2, 2, 2, 2) btn1 = wx.Button(panel, label='Info') btn2 = wx.Button(panel, label='Error') btn3 = wx.Button(panel, label='Question') btn4 = wx.Button(panel, label='Alert') sizer.AddMany(
) hbox.Add(sizer, 0, wx.ALL, 15) panel.SetSizer(hbox) btn1.Bind(wx.EVT_BUTTON, self.ShowMessage1) btn2.Bind(wx.EVT_BUTTON, self.ShowMessage2) btn3.Bind(wx.EVT_BUTTON, self.ShowMessage3) btn4.Bind(wx.EVT_BUTTON, self.ShowMessage4) self.SetSize((300, 200)) self.SetTitle('Messages') self.Centre() def ShowMessage1(self, event): dial = wx.MessageDialog(None, 'Download completed', 'Info', wx.OK) dial.ShowModal() def ShowMessage2(self, event): dial = wx.MessageDialog(None, 'Error loading file', 'Error', wx.OK | wx.ICON_ERROR) dial.ShowModal() def ShowMessage3(self, event): dial = wx.MessageDialog(None, 'Are you sure to quit?', 'Question', wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION) dial.ShowModal() def ShowMessage4(self, event): dial = wx.MessageDialog(None, 'Unallowed operation', 'Exclamation', wx.OK | wx.ICON_EXCLAMATION) dial.ShowModal()def main(): app = wx.App() ex = Example(None) ex.Show() app.MainLoop()if __name__ == '__main__': main()
code>
在我们的例子中,我们已经创建了四个按钮,并将它们放在一个网格尺中。这些按钮将显示四个不同的对话窗口。我们通过指定不同的样式标志来创建它们。
def ShowMessage2(self, event): dial = wx.MessageDialog(None, 'Error loading file', 'Error', wx.OK | wx.ICON_ERROR) dial.ShowModal()
code>
消息对话框的创建很简单。我们将对话框设置为一个toplevel窗口,提供None作为父窗口。这两个字符串提供了消息文本和对话框的标题。我们通过指定
wx.OK
code>和
wx.ICON_ERROR
code>标志来显示一个OK按钮和一个错误图标。为了在屏幕上显示对话框,我们调用
ShowModal()
code>方法。

自定义对话框
在下一个例子中,我们创建一个自定义对话框。一个图像编辑程序可以改变图片的颜色深度,为了提供这个功能,我们可以创建一个合适的对话框。为了提供这个功能,我们可以创建一个合适的对话框。
#custom_dialog.pyimport wxclass ChangeDepthDialog(wx.Dialog): def __init__(self, *args, **kw): super(ChangeDepthDialog, self).__init__(*args, **kw) self.InitUI() self.SetSize((250, 200)) self.SetTitle("Change Color Depth") def InitUI(self): pnl = wx.Panel(self) vbox = wx.BoxSizer(wx.VERTICAL) sb = wx.StaticBox(pnl, label='Colors') sbs = wx.StaticBoxSizer(sb, orient=wx.VERTICAL) sbs.Add(wx.RadioButton(pnl, label='256 Colors', style=wx.RB_GROUP)) sbs.Add(wx.RadioButton(pnl, label='16 Colors')) sbs.Add(wx.RadioButton(pnl, label='2 Colors')) hbox1 = wx.BoxSizer(wx.HORIZONTAL) hbox1.Add(wx.RadioButton(pnl, label='Custom')) hbox1.Add(wx.TextCtrl(pnl), flag=wx.LEFT, border=5) sbs.Add(hbox1) pnl.SetSizer(sbs) hbox2 = wx.BoxSizer(wx.HORIZONTAL) okButton = wx.Button(self, label='Ok') closeButton = wx.Button(self, label='Close') hbox2.Add(okButton) hbox2.Add(closeButton, flag=wx.LEFT, border=5) vbox.Add(pnl, proportion=1, flag=wx.ALL|wx.EXPAND, border=5) vbox.Add(hbox2, flag=wx.ALIGN_CENTER|wx.TOP|wx.BOTTOM, border=10) self.SetSizer(vbox) okButton.Bind(wx.EVT_BUTTON, self.OnClose) closeButton.Bind(wx.EVT_BUTTON, self.OnClose) def OnClose(self, e): self.Destroy()class Example(wx.Frame): def __init__(self, *args, **kw): super(Example, self).__init__(*args, **kw) self.InitUI() def InitUI(self): tb = self.CreateToolBar() tb.AddTool(toolId=wx.ID_ANY, label='', bitmap=wx.Bitmap('icon_1.png')) tb.Realize() tb.Bind(wx.EVT_TOOL, self.OnChangeDepth) self.SetSize((350, 250)) self.SetTitle('Custom dialog') self.Centre() def OnChangeDepth(self, e): cdDialog = ChangeDepthDialog(None, title='Change Color Depth') cdDialog.ShowModal() cdDialog.Destroy()def main(): app = wx.App() ex = Example(None) ex.Show() app.MainLoop()if __name__ == '__main__': main()
code>
在上面的例子中,我们已经创建了一个自定义对话框。
class ChangeDepthDialog(wx.Dialog): def __init__(self, *args, **kw): super(ChangeDepthDialog, self).__init__(*args, **kw)
code>
在我们的代码示例中,我们创建了一个自定义的ChangeDepthDialog对话框。我们从wx.Dialog widget继承。
def OnChangeDepth(self, e): cdDialog = ChangeDepthDialog(None, title='Change Color Depth') cdDialog.ShowModal() cdDialog.Destroy()
code>
我们实例化一个ChangeDepthDialog类。然后我们调用ShowModal()方法。稍后,我们必须使用Destroy()来销毁我们的对话框,请注意对话框和顶层窗口之间的视觉差异。右图中的对话框已经被激活。在对话框被销毁之前,我们不能对顶层窗口进行工作。窗口的标题栏有明显的区别。

温馨提示:答案为网友推荐,仅供参考
相似回答