gpt4 book ai didi

python - wxpython:在 sizer 的面板中居中文本

转载 作者:太空宇宙 更新时间:2023-11-03 13:51:10 25 4
gpt4 key购买 nike

在我看来,下面的代码应该在窗口的正中央显示文本;也就是说,在内面板的中央。然而,它没有,我想知道为什么不。如果运行代码,您会在框架中间看到一个白色面板,大小为 150 像素 x 150 像素。我根本不希望这个区域改变大小,但是当我开始添加一些文本时(取消注释片段中间的 txt 变量)面板总是缩小以适合文本。即使指定 StaticText 的大小以匹配面板也不是解决方案,因为文本不会居中对齐。

import wx

class MyFrame(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title)




self.rootPanel = wx.Panel(self)

innerPanel = wx.Panel(self.rootPanel,-1, size=(150,150), style=wx.ALIGN_CENTER)
innerPanel.SetBackgroundColour('WHITE')
hbox = wx.BoxSizer(wx.HORIZONTAL)
vbox = wx.BoxSizer(wx.VERTICAL)

# I want this line visible in the CENTRE of the inner panel
#txt = wx.StaticText(innerPanel, id=-1, label="TEXT HERE",style=wx.ALIGN_CENTER, name="")

hbox.Add(innerPanel, 0, wx.ALL|wx.ALIGN_CENTER)
vbox.Add(hbox, 1, wx.ALL|wx.ALIGN_CENTER, 5)

self.rootPanel.SetSizer(vbox)
vbox.Fit(self)

class MyApp(wx.App):
def OnInit(self):
frame = MyFrame(None, -1, 'wxBoxSizer.py')
frame.Show(True)
frame.Center()
return True

app = MyApp(0)
app.MainLoop()

最佳答案

您只需添加几个垫片即可使其正常工作。

import wx

class MyFrame(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title)

self.rootPanel = wx.Panel(self)

innerPanel = wx.Panel(self.rootPanel,-1, size=(150,150), style=wx.ALIGN_CENTER)
innerPanel.SetBackgroundColour('WHITE')
hbox = wx.BoxSizer(wx.HORIZONTAL)
vbox = wx.BoxSizer(wx.VERTICAL)
innerBox = wx.BoxSizer(wx.VERTICAL)

# I want this line visible in the CENTRE of the inner panel
txt = wx.StaticText(innerPanel, id=-1, label="TEXT HERE",style=wx.ALIGN_CENTER, name="")
innerBox.AddSpacer((150,75))
innerBox.Add(txt, 0, wx.CENTER)
innerBox.AddSpacer((150,75))
innerPanel.SetSizer(innerBox)

hbox.Add(innerPanel, 0, wx.ALL|wx.ALIGN_CENTER)
vbox.Add(hbox, 1, wx.ALL|wx.ALIGN_CENTER, 5)

self.rootPanel.SetSizer(vbox)
vbox.Fit(self)

class MyApp(wx.App):
def OnInit(self):
frame = MyFrame(None, -1, 'wxBoxSizer.py')
frame.Show(True)
frame.Center()
return True

app = MyApp(0)
app.MainLoop()

关于python - wxpython:在 sizer 的面板中居中文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8580831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com