我想提示一個wx.MessageBox
像這樣的用戶,但我面臨這樣做的幾個問題:帶來的MessageBox到前臺
response = wx.MessageBox(MESSAGE, document, wx.YES_NO | wx.STAY_ON_TOP) # prompt the user
出於某種原因,該對話框拒絕留在上面,無論我已經通過了這個標誌。是否有一種在所有正在運行的前臺應用程序頂部產生一個對話框的傻瓜證明方法?
我想提示一個wx.MessageBox
像這樣的用戶,但我面臨這樣做的幾個問題:帶來的MessageBox到前臺
response = wx.MessageBox(MESSAGE, document, wx.YES_NO | wx.STAY_ON_TOP) # prompt the user
出於某種原因,該對話框拒絕留在上面,無論我已經通過了這個標誌。是否有一種在所有正在運行的前臺應用程序頂部產生一個對話框的傻瓜證明方法?
我在某處讀到wx.STAY_ON_TOP
與dialog
一起使用時只適用於MSW。即使如此,因爲它可以讓您可以將問題通過分配STAY_ON_TOP
到self
編輯:
而否定它的手,將其標記爲不實用,請嘗試以下。只有點擊頂部的按鈕Question
停留,其餘的行爲爲正常(在Linux反正)
import wx
class 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([btn1, btn2, btn3, btn4])
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()
self.Show(True)
# self.SetWindowStyle(wx.STAY_ON_TOP)
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 | wx.STAY_ON_TOP)
dial.ShowModal()
def ShowMessage3(self, event):
self.SetWindowStyle(wx.STAY_ON_TOP)
dial = wx.MessageDialog(None, 'Are you sure to quit?', 'Question',
wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION)
dial.ShowModal()
self.SetWindowStyle(wx.DEFAULT_FRAME_STYLE)
def ShowMessage4(self, event):
dial = wx.MessageDialog(None, 'Unallowed operation', 'Exclamation',
wx.OK | wx.ICON_EXCLAMATION)
dial.ShowModal()
def main():
ex = wx.App()
Example(None)
ex.MainLoop()
if __name__ == '__main__':
main()
如果'self'是框架,我已經試過了。 –
@MalikBrahimi看到我的編輯 –
這爲我工作在Windows 7的wxPython 3.0.2和Python 2.7。你在用什麼? –
Windows 8.1和其他都是一樣的。 –