如何解决wxPython SetMinSize问题
| 在wxPython中设置SetMinSize时遇到问题。有人可以帮我让这个窗口变得比启动时更小吗?和/或使窗口不允许调整大小? 我在MainPanel类中的self.SetSizerAndFit(SizerH)
之后尝试了self.SetMinSize(GetSize())
。不工作。
我已经寻找并搜寻了,但没有帮助。
我对编程还是陌生的,有人可以评论程序的构建方式吗?它可以理解并且很好吗?还是应该采取措施?
感谢任何帮助。 =]
这是代码:
import wx
ID_EXIT = 110
class MainPanel(wx.Panel):
def __init__(self,parent,id):
wx.Panel.__init__(self,id)
self.parent = parent
#------------- Setting up the buttons
Run = wx.Button(self,label=\"Run\")
Run.Bind(wx.EVT_BUTTON,self.Run )
#------------- Setting up Static text
ChooseRoot = wx.StaticText(self,label =\"Root catalog: \")
ScratchWrk = wx.StaticText(self,label =\"Sratch workspace: \")
MergeFile = wx.StaticText(self,label =\"Merge file: \")
#------------ Setting up inputtext
ChooseRoottxt = wx.TextCtrl(self,-1,size=(210,-1))
#------------- Setting up the outputBox
Output = wx.TextCtrl(self,style=wx.TE_MULTILINE|wx.TE_READONLY)
#------------- Setting up the sizer
SizerV1 = wx.BoxSizer(wx.VERTICAL)
SizerV1.Add(ChooseRoot,wx.ALIGN_RIGHT|wx.ALL,5)
SizerV1.Add(ScratchWrk,5)
SizerV1.Add(MergeFile,5)
SizerV3 = wx.BoxSizer(wx.VERTICAL)
SizerV3.Add(ChooseRoottxt,5)
SizerV2 = wx.BoxSizer(wx.VERTICAL)
SizerV2.Add(Run,5)
SizerH1 = wx.BoxSizer()
SizerH1.Add(SizerV1,wx.ALIGN_RIGHT | wx.EXPAND | wx.ALL)
SizerH1.Add(SizerV3,1,wx.ALIGN_RIGHT | wx.EXPAND | wx.ALL)
SizerH1.Add(SizerV2,wx.ALIGN_RIGHT | wx.EXPAND | wx.ALL)
SizerH2 = wx.BoxSizer()
SizerH2.Add(Output,wx.EXPAND | wx.ALL,5)
SizerH = wx.BoxSizer(wx.VERTICAL)
SizerH.Add(SizerH1,wx.ALIGN_RIGHT | wx.EXPAND | wx.ALL)
SizerH.Add(SizerH2,wx.ALIGN_RIGHT | wx.EXPAND | wx.ALL)
self.SetSizerAndFit(SizerH)
#--- START EVENT HANDLERS
def Run(self,event=None):
pass
class MainWindow(wx.Frame):
def __init__(self,id,title):
wx.Frame.__init__(self,wx.ID_ANY,title,size = (415,330),style = wx.DEFAULT_FRAME_STYLE | wx.NO_FULL_REPAINT_ON_RESIZE | wx.STAY_ON_TOP)
self.CreateStatusBar() # Creates statusbar
#------------- Setting up the menu
filemenu = wx.Menu()
filemenu.Append(ID_EXIT,\"E&xit\",\"Exit the program\")
#------------- Creating the menu
menubar = wx.MenuBar()
menubar.Append(filemenu,\"&File\")
self.SetMenuBar(menubar)
#---------- Setting menu event handlers
wx.EVT_MENU(self,ID_EXIT,self.OnExit)
#--- Add MainPanel
self.Panel = MainPanel(self,-1)
#Centre on Screen
self.CentreOnScreen()
###---- SHOW THE WINDOW
self.Show(True)
def OnExit(self,event):
self.Close(True) # Close the Frame
#--- END EVENT HANDLERS ---------------------------------
if __name__==\'__main__\':
try:
app = wx.PySimpleApp()
frame = MainWindow(None,\"Indexinator3000\")
app.MainLoop()
finally:
del app
解决方法
固定:
###---- SHOW THE WINDOW
self.Show(True)
self.SetMinSize(self.GetSize())
普通的留言:
代码还不错。只是一些评论:
对小部件使用对象属性,因此不要松动它们(self.ChooseRoot =...
)
使用更多描述性的小部件名称(self.labelChooseRoot
)
丢弃ID,不需要时为默认值-1
删除多余的注释,不提供任何新信息(self.CreateStatusBar() # Creates statusbar
)
您可以从呼叫self.Show(True)
和self.Close(True)
中删除True值,因为True是默认值
我建议对派生的窗口小部件类使用这种构造函数,但这是基于我的个人喜好:
。
def __init__(self,*args,**kwargs):
wx.Frame.__init__(self,**kwargs)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。