我想以固定大小在屏幕中央抛出一个视图,一些静态文本以水平和垂直方向居中显示。
到目前为止,我有以下代码:
import wx
class DisplayText(wx.Dialog):
def __init__(self, parent, text="", displayMode=0):
# Initialize dialog
wx.Dialog.__init__(self, parent, size=(480,320), style=( wx.DIALOG_EX_METAL | wx.STAY_ON_TOP ) )
# Center form
self.Center()
self.txtField = wx.StaticText(self, label=text, pos=(80,120), size=(320,200), style=wx.ALIGN_CENTRE_HORIZONTAL | wx.ST_NO_AUTORESIZE)
self.txtField.SetFont(wx.Font(24, wx.DEFAULT, wx.BOLD, 0))
app = wx.App(False)
c = DisplayText(None, text="Now is the time for all good men to come to the aid of their country.")
c.Show()
app.MainLoop()
目标是让文本垂直居中,但就目前而言,我只是想明确静态文本在框架上的位置。
短暂的瞬间,文本显示在我放入的位置,但随后它会快速跳转到窗口的最上边界并扩展到最大宽度。 (我故意将宽度和位置设置为低,以便我能够看到这种行为是否正在发生。)
如果我使用wx.Dialog或wx.Frame无关紧要。
正如您所看到的,我确实定义了NO_AUTORESIZE标志,但这并没有被尊重。
任何人都可以解释发生了什么吗?
Python 2.7.5 / wxWidgets 2.8.12.1/Mac OS X 10.8.4
答案 0 :(得分:0)
事实证明,这是Mac OS X本机对话框实现的限制。
以下内容使其在OS X上运行。我从来没有在Windows上尝试过,但是从其他论坛帖子看来,它在Windows上可以正常工作。
import wx
class DisplayText(wx.Dialog):
def __init__(self, parent, text="", displayMode=0):
# Initialize dialog
wx.Dialog.__init__(self, parent, size=(480,320), style=( wx.DIALOG_EX_METAL | wx.STAY_ON_TOP ) )
# Center form
self.Center()
# (For Mac) Setup a panel
self.panel = wx.Panel(self)
# Create text field
self.txtField = wx.StaticText(self.panel, label=text, pos=(80,120), size=(320,200), style=wx.ALIGN_CENTRE_HORIZONTAL | wx.ST_NO_AUTORESIZE)
self.txtField.SetFont(wx.Font(24, wx.DEFAULT, wx.BOLD, 0))
self.txtField.SetAutoLayout(False)
app = wx.App(False)
c = DisplayText(None, text="Now is the time for all good men to come to the aid of their country.")
c.Show()
app.MainLoop()