wx.选项未在Windows 10上正确显示
我正在使用Python3.6.4和Wxpython4.0.1 msw(凤凰城)进行一个项目。我正在Mac上开发,但我正在部署的系统之一是Windows 10。我的代码(去掉所有不相关的内容)如下所示:wx.选项未在Windows 10上正确显示,windows,python-3.x,wxpython,Windows,Python 3.x,Wxpython,我正在使用Python3.6.4和Wxpython4.0.1 msw(凤凰城)进行一个项目。我正在Mac上开发,但我正在部署的系统之一是Windows 10。我的代码(去掉所有不相关的内容)如下所示: import wx class MainWindow(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, title="Dropdown Test", size=(400,400)) c
import wx
class MainWindow(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title="Dropdown Test", size=(400,400))
control_sizer = wx.GridBagSizer(vgap=3, hgap=10)
label1 = wx.StaticText(self, -1, label="First Dropdown:", size=(120,35))
control_sizer.Add(label1, (0,0), (1,1), wx.EXPAND)
label2 = wx.StaticText(self, -1, label="Second Dropdown:", size=(120,35))
control_sizer.Add(label2, (1,0), (1,1), wx.EXPAND)
self.choice1 = wx.Choice(self, -1, choices=["thing 1","thing 2","thing 3","thing 4"])
self.choice2 = wx.Choice(self, -1, choices=["stuff 1","stuff 2","stuff 3","stuff 4"])
control_sizer.Add(self.choice1, (0,1), (1,1), wx.EXPAND)
control_sizer.Add(self.choice2, (1,1), (1,1), wx.EXPAND)
self.SetSizerAndFit(control_sizer)
if __name__ == "__main__":
app = wx.App()
main_window = MainWindow()
main_window.Show()
app.MainLoop()
在Mac电脑上,一切都和我预期的一模一样。在Windows上,下拉菜单(wx.Choice控件)功能正常——我可以选择项目——但它们在折叠时不会显示当前选择的项目。相比之下,它们看起来是这样的:
我不明白我做错了什么。经过进一步的实验,似乎在
wx.Choice
上使用显式大小调整而不是依赖默认值可以解决看不到当前选择的问题,但在用户选择某个内容之前,wx.Choice
框中仍然不会显示任何文本
第二个问题是通过显式分配起始值而不是依赖默认值来解决的。这两项在Mac上都不是必需的,但在Windows上似乎是必需的。这是\uuuu init\uuuu
的工作代码:
def __init__(self):
wx.Frame.__init__(self, None, title="Dropdown Test", size=(400,400))
control_sizer = wx.GridBagSizer(vgap=3, hgap=10)
label1 = wx.StaticText(self, -1, label="First Dropdown:", size=(120,25))
control_sizer.Add(label1, (0,0), (1,1), flag=wx.LEFT | wx.TOP | wx.EXPAND, border=10)
label2 = wx.StaticText(self, -1, label="Second Dropdown:", size=(120,25))
control_sizer.Add(label2, (1,0), (1,1), flag=wx.LEFT | wx.TOP | wx.EXPAND, border=10)
self.choice1 = wx.Choice(self, -1, choices=["thing 1","thing 2","thing 3","thing 4"], size=(120,25))
self.choice1.SetSelection(0)
control_sizer.Add(self.choice1, (0,1), (1,1), flag=wx.RIGHT | wx.EXPAND, border=10)
self.choice2 = wx.Choice(self, -1, choices=["stuff 1","stuff 2","stuff 3","stuff 4"], size=(120,25))
control_sizer.Add(self.choice2, (1,1), (1,1), flag=wx.RIGHT | wx.EXPAND, border=10)
self.choice2.SetSelection(1)
self.SetSizerAndFit(control_sizer)
为了美观,我还在控件周围添加了一些间距