0
フラグを使用して2つのボタンを中央に配置するのが難しいです。私がしようとすると、出力がこれです、そして、彼らは下の中央に整列しない理由を私は理解していない。:次のコードでフラグを使用してwxPythonのボタンウィジェットを移動しようとしていません
:
#!/usr/bin/python
# gui.py
import wx
import webbrowser
class PanelOne(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent=parent)
class PanelTwo(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent=parent)
class GUI(wx.Frame):
def __init__(self, *args, **kwargs):
super(GUI, self).__init__(*args, **kwargs)
self.poo()
def poo(self):
self.CreateStatusBar()
menubar = wx.MenuBar()
fileMenu = wx.Menu()
self.add_entry = wx.MenuItem(fileMenu, -1, '&Add Entry\tShift+A', 'Add employee')
quit = wx.MenuItem(fileMenu, wx.ID_EXIT, '&Quit\tEsc', 'Quit application')
fileMenu.AppendItem(self.add_entry)
fileMenu.AppendItem(quit)
menubar.Append(fileMenu, '&Options')
self.SetMenuBar(menubar)
self.panel_one = PanelOne(self)
self.panel_two = PanelTwo(self)
self.panel_two.Hide()
vbox = wx.BoxSizer(wx.VERTICAL)
vbox.Add(self.panel_one, 1, wx.EXPAND)
vbox.Add(self.panel_two, 1, wx.EXPAND)
self.SetSizer(vbox)
pv1box = wx.BoxSizer(wx.HORIZONTAL)
self.panel_one.SetSizer(pv1box)
self.chrome_button = wx.Button(self.panel_one, id=2, label='Gmail')
self.outlook_button = wx.Button(self.panel_one, id=1, label='Outlook')
pv1box.Add(self.chrome_button, flag=wx.ALIGN_BOTTOM | wx.ALIGN_CENTER | wx.ALIGN_RIGHT)
pv1box.Add(self.outlook_button, flag=wx.ALIGN_BOTTOM | wx.ALIGN_CENTER | wx.ALIGN_RIGHT)
self.SetSize((450, 300))
self.SetTitle('Prototype')
self.Centre()
self.Show(True)
self.Bind(wx.EVT_MENU, self.onQuit, quit)
self.Bind(wx.EVT_KEY_DOWN, self.onESCQuit, quit)
self.Bind(wx.EVT_MENU, self.onSwitchPanels, self.add_entry)
self.chrome_button.Bind(wx.EVT_BUTTON, self.onClick)
self.outlook_button.Bind(wx.EVT_BUTTON, self.onClick)
def onQuit(self, e):
dial = wx.MessageDialog(None, 'Are you sure to quit?', 'Question', wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION)
input = dial.ShowModal()
if input == wx.ID_YES:
self.Close()
def onESCQuit(self, e):
esc = e.GetKey()
if esc == wx.WXK_ESCAPE:
dial = wx.MessageDialog(None, 'Are you sure to quit?', 'Question', wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION)
input = dial.ShowModal()
if input == wx.ID_YES:
self.Close()
def onSwitchPanels(self, event):
if self.panel_one.IsShown():
self.add_entry.SetText('Notifications')
self.panel_one.Hide()
self.panel_two.Show()
else:
self.add_entry.SetText('Add Entry')
self.panel_one.Show()
self.panel_two.Hide()
def onClick(self, event):
if event.Id == self.chrome_button.Id:
chrome_path = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s'
# Without this path it will open in Internet Explorer
webbrowser.get(chrome_path).open('https://mail.google.com')
else:
chrome_path = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s'
# Without this path it will open in Internet Explorer
webbrowser.get(chrome_path).open('https://outlook.live.com')
def main():
app = wx.App()
GUI(None)
app.MainLoop()
if __name__ == '__main__':
main()
しかし私は、彼らはまだ底に中央に配置されないだろう、そうし、両方のボタンが同じパネル上にあるように、それを作っています/ – javanewbie
私はストレッチスペーサコードのポスト – javanewbie
@javanewbieを追加しました例を更新します最新バージョンのコードでボタンを中央に置くことができます。 – Yoriz