- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
由于某些原因,我的 sizer.Clear()
似乎无法正常工作。
据我从文档中了解到它应该可以工作。
我是不是做错了什么导致了这种行为?
import wx
import os
import sys
import time
import string
import urllib2
class MainWindow(wx.Frame):
def __init__(self, parent, id=wx.ID_ANY, title="", pos=wx.DefaultPosition,
size=wx.DefaultSize, style=wx.MINIMIZE_BOX | wx.CLOSE_BOX | wx.RESIZE_BORDER | wx.SYSTEM_MENU | wx.CAPTION):
wx.Frame.__init__(self, parent, id, title, pos, size, style)
panel = wx.Panel(self)
sizer = wx.BoxSizer(wx.VERTICAL)
panel.SetSizer(sizer)
self.sizer = sizer
self.panel = panel
self.ShowLoginBox()
def ShowLoginBox(self):
sizer = wx.FlexGridSizer(rows=4, cols=2, hgap=15, vgap=10)
sizer.AddGrowableCol(1, 1)
login_url = wx.TextCtrl(self.panel, 1, size=(150, -1))
label_url = wx.StaticText(self.panel, -1, "URL:")
sizer.Add(label_url, 0, wx.LEFT | wx.TOP| wx.RIGHT, 30)
sizer.Add(login_url, 1, wx.EXPAND | wx.TOP | wx.RIGHT, 30)
login_username = wx.TextCtrl(self.panel, 1, size=(150, -1))
label_username = wx.StaticText(self.panel, -1, "Username:")
sizer.Add(label_username, 0, wx.LEFT | wx.RIGHT, 30)
sizer.Add(login_username, 1, wx.EXPAND | wx.RIGHT, 30)
login_password = wx.TextCtrl(self.panel, 1, size=(150, -1), style=wx.TE_PASSWORD)
label_password = wx.StaticText(self.panel, -1, "Password:")
sizer.Add(label_password, 0, wx.LEFT | wx.RIGHT, 30)
sizer.Add(login_password, 1, wx.EXPAND | wx.RIGHT, 30)
btn_process = wx.Button(self.panel, -1, "&Login")
self.panel.Bind(wx.EVT_BUTTON, self.OnSubmit, btn_process)
sizer.Add(btn_process, 0, wx.LEFT, 30)
login_url.SetValue("http://example.com")
login_username.SetValue("admin")
login_password.SetValue("pass")
self.login_url = login_url
self.login_username = login_username
self.login_password = login_password
self.sizer.Clear()
self.sizer.Add(sizer, 1, wx.EXPAND)
self.SetSizeWH(330, 250)
self.Center()
def OnSubmit(self, event):
user_url = self.login_url.GetValue()
user_name = self.login_username.GetValue()
user_pass = self.login_password.GetValue()
# login info is used to get a URL
print user_url, user_name, user_pass
# if 200 OK
self.ShowNew()
def ShowNew(self):
sizer = wx.BoxSizer(wx.HORIZONTAL)
content = wx.ListCtrl(self.panel, -1, size=(780, 400), style=wx.LC_REPORT | wx.LC_SINGLE_SEL | wx.LC_HRULES | wx.LC_VRULES)
content.InsertColumn(0, 'URL', width=745)
sizer.Add(content, 1, wx.EXPAND)
# populate with data from URL
self.SetSizeWH(800, 520)
self.Center()
self.sizer.Clear()
self.sizer.Add(sizer)
if __name__ == '__main__':
home_path = os.path.dirname(os.path.realpath(__file__))
app = wx.PySimpleApp()
frame = MainWindow(None, title="Test", size=(800, 520))
frame.SetBackgroundColour("#ffffff")
frame.Show()
app.MainLoop()
最佳答案
使用 sizer.Clear(True) 而不是 sizer.Clear() 它应该可以工作。
解释
如果发送到 Clear() 方法的参数为 True,“那么子窗口也将被删除”(http://docs.wxwidgets.org/2.8/wx_wxsizer.html#wxsizerclear)。
您想清除 wxSizer 的子项:wxStaticText、wxTextCtrl、wxButton,它们都派生自 wxControl 和 wxWindow。这就是为什么 sizer 必须知道您还想删除子窗口的原因。
另请参阅:http://docs.wxwidgets.org/2.8/wx_wxstatictext.html , http://docs.wxwidgets.org/2.8/wx_wxtextctrl.html和 http://docs.wxwidgets.org/2.8/wx_wxbutton.html .
干杯!
关于python - 无法清除 wxBoxSizer 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17271901/
由于某些原因,我的 sizer.Clear() 似乎无法正常工作。 据我从文档中了解到它应该可以工作。 我是不是做错了什么导致了这种行为? import wx import os import sys
我有一个带有两个 wxNotebook 元素的 GUI,如下所示: class MainFrame(wx.Frame): def __init__(self): wx.Fram
我对内部 wxBoxSizer 内部的垫片有疑问。这是示例代码。 class Frame : public wxFrame { public: Frame() : wxFram
我在 C++ GUI 应用程序中添加 4 个或更多 wxBoxSizer(或任何其他类型的 Sizer 对象)时遇到问题。这是我第一次使用 wxWidgets 创建 GUI 应用程序,我使用 Code
我是一名优秀的程序员,十分优秀!