我正在使用Python 3.6.4和wxpython 4.0.1 msw(phoenix)开展项目。我正在使用Mac进行开发,但我正在部署的系统之一是Windows 10.我的代码(删除所有不相关的内容)看起来像这样:
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控件)功能正常 - 我可以选择项目 - 但是当它们折叠时它们不显示当前选择的项目。这是他们在比较中看起来的样子:
我不明白我做错了什么。
答案 0 :(得分:1)
经过进一步的实验,似乎在wx.Choice
上使用显式大小而不是依赖默认值可以解决看不到当前选择的问题,但它仍然没有显示{{1}中的任何文字1}}框直到用户选择了某些内容。
通过显式分配起始值而不是依靠默认值来解决第二个问题。这些都不是Mac上必需的,但似乎是Windows所必需的。这是wx.Choice
的工作代码:
__init__
我还在控件周围添加了一些间距以增加美感。