dialog - wxPython:如何根据嵌入的StaticText的内容使Dialog调整大小
问题描述
这是我的测试小程序:
import wx
class Test(wx.Dialog):
def __init__(self, parent, title="", caption='', btnList=['OK']):
wx.Dialog.__init__(self, parent, -1, title=title)
self.btnList = btnList
self.parent = parent
sizer = wx.BoxSizer()
self.panel = wx.Panel(self, -1)
sizer.Add(self.panel)
self.mainSizer = wx.BoxSizer(wx.VERTICAL)
self.panel.SetSizer(self.mainSizer)
self.caption = caption
self.setCaption()
self.setButton()
self.SetSizerAndFit(sizer)
def setCaption(self):
caplb = wx.StaticText(self.panel, -1, self.caption)
self.mainSizer.Add(caplb, 1, wx.EXPAND | wx.ALL, 10)
capFont = caplb.GetFont()
capFont.SetPointSize(10)
capFont.SetWeight(wx.FONTWEIGHT_BOLD)
caplb.SetFont(capFont)
caplb.SetForegroundColour(wx.RED)
def setButton(self):
self.btnBox = wx.BoxSizer(wx.HORIZONTAL)
self.mainSizer.Add(self.btnBox, 0, wx.EXPAND | wx.BOTTOM, 10)
self.btnBox.Add((1, 1), 1, wx.EXPAND)
self.btns = []
for i in range(len(self.btnList)):
self.btns.append(wx.Button(self.panel, -1, self.btnList[i]))
self.btnBox.Add(self.btns[i])
self.btnBox.Add((1, 1), 1, wx.EXPAND)
if __name__ == "__main__":
app = wx.App()
msg = ""
for i in range(8):
msg += "%s: ATTENTION! ATTENTION! ATTENTION! ATTENTION!\n" % i
dlg = Test(None, caption=msg, title="WARNING", btnList=['Yes', 'No'])
dlg.CenterOnParent()
val = dlg.ShowModal()
app.MainLoop()
我希望对话框展开,以便可以看到 caplb 中的所有文本。在我处理过这段代码的大多数系统中,它运行良好。但是当我迁移到新系统时,gtk 限制只能显示 caplb 的一半。我不知道如何强制它显示所有的 StaticText。你能看看那个并告诉我提示吗?先谢谢了!!!
解决方案
推荐阅读
- react-native - 如何在反应原生地图中按按钮打印纬度?
- python - 如何终止调用 python 多处理的 ssh 会话
- kubernetes - helm init 错误:安装时出错:在 gitlab runner 中运行时禁止部署.extensions
- tensorflow - Tensorflow 中的张量可以有非连续内存吗?
- apache - 为什么我会收到 500 内部服务器错误和 Apache 错误,并超出内部重定向?
- java - FileSystemPersistentAcceptOnceFileListFilter 与 MongoDB 元数据存储重复文件处理
- audit - 使用 ExaPlus 创建哪些 SQL 查询以在左侧生成菜单(模式、表和视图、.. 连接)?
- intel-pin - Intel PIN:当工具中发生段错误时打印回溯
- html - 放大时将文本放入容器
- jquery - 右括号在那里,为什么它说它缺少括号?