我正在尝试将按钮放在列表框下面,但我尝试的所有内容似乎都会扭曲或导致问题。我希望有人能帮助我。
我想在列表框下面放两个按钮,它们应该总是根据窗口的大小改变位置(所以它不会消失),当你调整应用程序窗口的大小时,它应该改变它的位置的按钮。
这是我到目前为止所拥有的
things_inlistbox=[]
things2_listbox=[]
things3listbox=[]
things4listbox=[]
import wx
def areachange(self,pg):
print pg
if pg=="Things":
self.Things_area.Show()
else:
self.Things_area.Hide()
class things1tab(wx.Panel):
def newAddImage(self,parent):
things2_listbox.append('hi');
self.listBox.Set(things2_listbox)
self.listBox.SetSelection(len(things2_listbox)-1)
def reName(self,parent):
sel = self.listBox.GetSelection()
text = self.listBox.GetString(sel)
renamed = wx.GetTextFromUser('Rename item', 'Rename dialog', text)
if renamed != '':
things2_listbox.pop(sel)
things2_listbox.insert(sel,renamed)
self.listBox.Set(things2_listbox)
self.listBox.SetSelection(sel)
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.listBox = wx.ListBox(self, size=(200, -1), choices=things2_listbox, style=wx.LB_SINGLE)
self.sizer = wx.BoxSizer()
self.sizerMain = wx.BoxSizer()
self.listBox.Bind(wx.EVT_LISTBOX_DCLICK, self.reName)
self.sizer.Add(self.listBox, proportion=0, flag=wx.TOP | wx.EXPAND | wx.LEFT, border=5)
self.sizerMain.Add(self.sizer, proportion=0, flag=wx.BOTTOM | wx.EXPAND, border=70)
self.SetSizer(self.sizerMain)
class imageArea(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent)
wx.StaticBox(self, -1, 'Personal Info', (400, 5), size=(240, 170))
self.quote = wx.StaticText(self, label="Your quote :", pos=(20, 30), size=(200, -1))
self.Show()
self.SetSizer(self.sizerMain)
class things2tab(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
t = wx.StaticText(self, -1, "This is a PageTwo object", (40,40))
class things3tab(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
t = wx.StaticText(self, -1, "This is a PageThree object", (60,60))
class things4tab(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
t = wx.StaticText(self, -1, "This is a PageThree object", (400,60))
class MyNotebook(wx.Notebook):
def __init__(self, *args, **kwargs):
wx.Notebook.__init__(self, *args, **kwargs)
class MyPanel(wx.Panel):
def OnPageChanged(self, event):
new = event.GetSelection()
areachange(self,self.notebook.GetPageText(new))
event.Skip()
def OnPageChanging(self, event):
event.Skip()
def __init__(self, *args, **kwargs):
wx.Panel.__init__(self, *args, **kwargs)
self.notebook = MyNotebook(self, size=(225, -1))
# self.button = wx.Button(self, label="Something else here? Maybe!")
tab_Things = things1tab(self.notebook)
tab_Things2 = things2tab(self.notebook)
tab_Things3 = things3tab(self.notebook)
tab_Things4 = things4tab(self.notebook)
# add the pages to the notebook with the label to show on the tab
self.notebook.AddPage(tab_Things, "Things",select=True)
self.notebook.AddPage(tab_Things2, "Things2")
self.notebook.AddPage(tab_Things3, "Things3")
self.notebook.AddPage(tab_Things4, "Things4")
self.Things_area=wx.StaticText(self, -1, "This is a PageOne object", (300,240))
self.sizer = wx.BoxSizer()
self.sizer.Add(self.notebook, proportion=0, flag=wx.EXPAND)
# self.sizer.Add(self.button, proportion=0)
self.SetSizer(self.sizer)
self.notebook.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, self.OnPageChanged)
self.notebook.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGING, self.OnPageChanging)
areachange(self,self.notebook.GetPageText(0))
class MainWindow(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
self.panel = MyPanel(self)
self.Show()
app = wx.App(False)
win = MainWindow(None, size=(600, 400))
app.MainLoop()
我不知道如何做到这一点,如果有人能帮助我,那将会非常有用。如果这很简单,请原谅我,但是我已经坚持了好几天。
答案 0 :(得分:1)
我不确定这是不是你的意思,但是尝试用这个替换你的“things1tab”代码,看看它是否有效:
class things1tab(wx.Panel):
def newAddImage(self,parent):
things2_listbox.append('hi');
self.listBox.Set(things2_listbox)
self.listBox.SetSelection(len(things2_listbox)-1)
def reName(self,parent):
sel = self.listBox.GetSelection()
text = self.listBox.GetString(sel)
renamed = wx.GetTextFromUser('Rename item', 'Rename dialog', text)
if renamed != '':
things2_listbox.pop(sel)
things2_listbox.insert(sel,renamed)
self.listBox.Set(things2_listbox)
self.listBox.SetSelection(sel)
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.listBox = wx.ListBox(self, size=(200, -1), choices=things2_listbox, style=wx.LB_SINGLE)
self.sizer = wx.BoxSizer(wx.VERTICAL)
btnSizer = wx.BoxSizer(wx.HORIZONTAL)
self.sizerMain = wx.BoxSizer()
self.listBox.Bind(wx.EVT_LISTBOX_DCLICK, self.reName)
btn = wx.Button(self, label="Test")
btnTwo = wx.Button(self, label="Test 2")
self.sizer.Add(self.listBox, proportion=1, flag=wx.TOP | wx.EXPAND | wx.LEFT, border=5)
btnSizer.Add(btn, 0, wx.ALL, 5)
btnSizer.Add(btnTwo, 0, wx.ALL, 5)
self.sizer.Add(btnSizer)
self.sizerMain.Add(self.sizer, proportion=0, flag=wx.BOTTOM | wx.EXPAND, border=70)
self.SetSizer(self.sizerMain)
我所做的只是创建一个按钮大小调整器,向其添加两个按钮并将其嵌套在“self.sizer”中。我还将以下比例从零改为1:
self.sizer.Add(self.listBox, proportion=1, flag=wx.TOP | wx.EXPAND | wx.LEFT, border=5)
希望这会帮助你走得更远。