Python 仅水平重新调整wx.Dialog
是否有一种方法允许自定义wx.对话框仅在水平方向上调整大小?我尝试过使用GetSize(),然后使用SetSizeHints()设置窗口的最小和最大高度,但由于某些原因,它总是允许窗口的大小调整一点,而且看起来相当俗气。我唯一的另一个选择是硬编码最小和最大高度,但我认为这不是一个好主意 相关代码:Python 仅水平重新调整wx.Dialog,python,wxpython,Python,Wxpython,是否有一种方法允许自定义wx.对话框仅在水平方向上调整大小?我尝试过使用GetSize(),然后使用SetSizeHints()设置窗口的最小和最大高度,但由于某些原因,它总是允许窗口的大小调整一点,而且看起来相当俗气。我唯一的另一个选择是硬编码最小和最大高度,但我认为这不是一个好主意 相关代码: class SomeDialog(wx.Dialog): def __init__(self, parent):
class SomeDialog(wx.Dialog):
def __init__(self, parent):
wx.Dialog.__init__(self, parent, title="blah blah",
style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER)
size = self.GetSize()
self.SetSizeHints(minW=size.GetWidth(), minH=size.GetHeight(),
maxH=size.GetHeight())
操作系统:Windows 7python版本:2.5.4
wxPython版本:2.8.10如果不想更改高度,为什么将“最小高度”和“最大高度”设置为相同的值(要强制的值)是个坏主意?当然,您可以使用
getbetize
或相关方法获得“最佳值”的系统估计值。虽然我发现设置大小提示并没有产生相同的效果(我认为应该是这样)这一事实很奇怪。。。您使用的是什么平台wxpython,以及Python、wxpython和平台/操作系统本身的哪个版本?我不喜欢硬编码这些值,因为我不确定它在不同的计算机上是否相同,这是一个PITA来计算每次我在对话框中更改某些内容时自动渲染的高度的精确值。我已经在问题中添加了版本细节:)我认为我已经完成了GetBestSize路线。反正是类似的东西;我让布局的东西做它的事情,然后得到当前的几何体,并设置最小值和最大值相同的值。它工作得很好。注意客户端大小和帧大小之间的差异;我也不记得那里的细节,但那可能会把你绊倒。或者,您的顶级sizer可以是水平的,而不是标记为EXPAND吗?@hawk,但无论如何,您必须获得“最佳高度”(这将考虑所有系统依赖关系),即使只是设置大小提示——我绝对不是说硬编码,只是尝试将最小和最大高度设置为“最佳”(正如您试图在上面做的,但通过大小提示)。当然,您必须在任何时候更改对话框时再次调用此简单的“设置固定高度”函数——但如果大小提示设置有效,您也会这样做!啊!我明白了!我在调用self.SetSizerAndIt(…)之前放置了上面的代码。GetBestSize()现在可以工作了,谢谢:)@hawk,太好了,我开始担心我必须重新开始寻找我的卡巴斯基磁盘,以便能够把我新买的便宜的win7笔记本电脑放到网上——很高兴我能一直拖延(还有更紧急的搬家后任务;-),尤其是你的问题已经解决了!