Python 无法从“中滚动两个列表框”;至于;环
我正在努力学习如何在Tkinter中创建更高级的小部件组合,但由于文档很少,所以我遇到了困难。每一帧都有一个日期和余额列表框,以及一个滚动条,该滚动条应在每一帧滚动两个列表框。当前,每个滚动条仅通过鼠标中键或拖动滚动进行滚动。使用滚动条箭头不起任何作用,每个列表框都独立滚动。我不确定我在下面的代码中做错了什么Python 无法从“中滚动两个列表框”;至于;环,python,tkinter,widget,Python,Tkinter,Widget,我正在努力学习如何在Tkinter中创建更高级的小部件组合,但由于文档很少,所以我遇到了困难。每一帧都有一个日期和余额列表框,以及一个滚动条,该滚动条应在每一帧滚动两个列表框。当前,每个滚动条仅通过鼠标中键或拖动滚动进行滚动。使用滚动条箭头不起任何作用,每个列表框都独立滚动。我不确定我在下面的代码中做错了什么 class BalanceLog: def month(self): month = [ ['January', 31],
class BalanceLog:
def month(self):
month = [
['January', 31],
['February', 28], # Check for leap year
['March', 31],
['April', 30],
['May', 31],
['June', 30],
['July', 31],
['August', 31],
['September', 30],
['October', 31],
['November', 30],
['December', 31]
]
year = 2020
mainFrame = tk.Frame(tkRoot)
mainFrame.config(bd=2, relief='groove')
mainFrame.grid(row=0, column=0, padx=70)
trxLabel = tk.Label(mainFrame, text='Transactions ' + str(year), font='courierNew 20 bold')
trxLabel.grid(row=0, columnspan=12, pady=(20, 0))
# Hold each month frame
self.monthFrame = []
self.dayList = []
self.endBalList = []
self.vScroll = []
for i in range(12):
monthLabel = tk.Label(mainFrame, text=month[i][0], font='courierNew 12 bold')
monthLabel.grid(row=1, column=i, pady=(20, 0))
self.monthFrame.append(tk.Frame(mainFrame))
self.monthFrame[i].config(bd=2, relief='groove')
self.monthFrame[i].grid(row=2, column=i, sticky=tk.W)
dayLabel = tk.Label(self.monthFrame[i], text='Day', font='courierNew 8 bold')
dayLabel.config(relief='raised')
dayLabel.grid(row=0, column=0, sticky=tk.W)
endBalLabel = tk.Label(self.monthFrame[i], text='Ending Balance', font='courierNew 8 bold')
endBalLabel.config(relief='raised')
endBalLabel.grid(row=0, column=1, sticky=tk.W)
self.dayList.append(tk.Listbox(self.monthFrame[i], width=3))
self.dayList[i].config(bd=2, relief='sunken')
self.dayList[i].grid(row=1, column=0, sticky=tk.W)
self.endBalList.append(tk.Listbox(self.monthFrame[i], width=16))
self.endBalList[i].config(bd=2, relief='raised', background='DARK GRAY')
self.endBalList[i].grid(row=1, column=1, sticky=tk.W)
self.vScroll.append(tk.Scrollbar(self.monthFrame[i], orient='vertical'))
self.vScroll[i].grid(row=1, column=2, sticky=(tk.N, tk.S, tk.E))
self.getFrame(idx=i)
# Insert data
for j in range(month[i][1]):
self.dayList[i].insert(tk.END, 1 + j)
self.endBalList[i].insert(tk.END, '999,999,999.99')
def getFrame(self, idx):
self.dayList[idx].config(yscrollcommand=self.vScroll[idx].set)
self.endBalList[idx].config(yscrollcommand=self.vScroll[idx].set)
self.scrollAll(idx)
def scrollAll(self, idx):
self.dayList[idx].yview(idx)
self.endBalList[idx].yview(idx)
您忘记为滚动条指定
命令
选项
下面是修改的getFrame()
和scrollAll()
函数:
def getFrame(self, idx):
self.dayList[idx].config(yscrollcommand=self.vScroll[idx].set)
self.endBalList[idx].config(yscrollcommand=self.vScroll[idx].set)
self.vScroll[idx].config(command=lambda *args: self.scrollAll(idx, *args))
def scrollAll(self, idx, *args):
self.dayList[idx].yview(*args)
self.endBalList[idx].yview(*args)
您忘记为滚动条指定
命令
选项
下面是修改的getFrame()
和scrollAll()
函数:
def getFrame(self, idx):
self.dayList[idx].config(yscrollcommand=self.vScroll[idx].set)
self.endBalList[idx].config(yscrollcommand=self.vScroll[idx].set)
self.vScroll[idx].config(command=lambda *args: self.scrollAll(idx, *args))
def scrollAll(self, idx, *args):
self.dayList[idx].yview(*args)
self.endBalList[idx].yview(*args)
如果tkinter是您的GUI,为什么不用它标记您的问题呢<代码>用户界面没有告诉我们任何事情我更新了代码。请尝试将此代码减少到一个新的级别。看起来有一些代码不需要重现与列表框相关的问题。另外,您还没有为滚动条分配命令。如果滚动条在列表中,我无法将命令添加到滚动条。我将得到一个错误,如“'list'对象没有属性'config'”。re:“如果滚动条在列表中,我无法将命令添加到滚动条。”-当然可以。事实上,你正在使用一个列表并不重要。如果tkinter是你的GUI,为什么不用它来标记你的问题呢<代码>用户界面没有告诉我们任何事情我更新了代码。请尝试将此代码减少到一个新的级别。看起来有一些代码不需要重现与列表框相关的问题。另外,您还没有为滚动条分配命令。如果滚动条在列表中,我无法将命令添加到滚动条。我将得到一个错误,如“'list'对象没有属性'config'”。re:“如果滚动条在列表中,我无法将命令添加到滚动条。”-当然可以。事实上,你正在使用一个列表并不重要。哦,你太棒了,我已经在这个问题上坚持了好几个星期,它终于起作用了!对于更先进的Tkinter技术,您有没有推荐的指南或书籍?我看过的大多数教程似乎只涉及创建按钮之类的基本内容,但似乎没有一个真正涉及到链接小部件。我通常阅读参考文档。这也是一个学习tkinter使用技巧的好地方,因为有很多经验丰富的人都有很棒的想法。我知道在我之前的帖子中,你向我展示了如何将tkinter嵌入到一个类中。嵌入vs与我使用列表的方式有什么好处吗?使用OOP更容易设计和排除故障。当你滚动一个列表框时,另一个列表框不会滚动哦,你太棒了,我已经在这个问题上纠缠了好几个星期了,它终于起作用了!对于更先进的Tkinter技术,您有没有推荐的指南或书籍?我看过的大多数教程似乎只涉及创建按钮之类的基本内容,但似乎没有一个真正涉及到链接小部件。我通常阅读参考文档。这也是一个学习tkinter使用技巧的好地方,因为有很多经验丰富的人都有很棒的想法。我知道在我之前的帖子中,你向我展示了如何将tkinter嵌入到一个类中。嵌入列表与我使用列表的方式相比有什么好处吗?使用OOP更容易设计和排除故障。当您滚动一个列表框时,另一个列表框不会滚动