gpt4 book ai didi

python - 使用 tkinter 的网格内的可滚动列表框

转载 作者:太空狗 更新时间:2023-10-29 20:54:39 26 4
gpt4 key购买 nike

我是这个地方和 tkinter 的新手。我坚持制作可滚动的列表框或 Canvas 。我已经尝试了两个小部件。在这个列表框或 Canvas 中,我有几个条目和标签小部件。原点是 R0,C0。我使用行/列配置来拉伸(stretch)列表框或 Canvas 。

在主窗口中,我在第四行到第四列 (0,4->4,4) 上有 4 个按钮。我将滚动条放在第 5 列。我尝试使用网格方法。我遇到的问题是使滚动条起作用。

注意:把大型机变成类只是我尝试过的方法之一。在右边打包滚动条已经奏效,在左边打包了列表框/ Canvas 。但是,命令滚动条的列表框/ Canvas 小部件不会滚动列表框/ Canvas 。此外,添加许多输入框不会导致列表框/ Canvas 滚动。请帮忙。

from tkinter import *
from tkinter.ttk import *

Style().configure("B.TFrame", relief="flat",
background="blue")
Style().configure("R.TFrame", relief="flat",
background="red")
Style().configure("R.TLabel", background="red")

class Application(Frame):
def __init__(self, master=None):
Frame.__init__(self, master, style="B.TFrame")
self.grid(sticky=N+S+E+W)
self.mainframe()

def mainframe(self):
top=self.winfo_toplevel()
self.menuBar = Menu(top)
top["menu"] = self.menuBar
self.subMenu = Menu(self.menuBar, tearoff=0)
self.subMenu2 = Menu(self.menuBar, tearoff=0)
self.menuBar.add_cascade(label="File", menu=self.subMenu)
self.menuBar.add_cascade(label="About", menu=self.subMenu2)
self.subMenu.add_command(label="Open")
self.subMenu.add_command(label="Save")
self.subMenu.add_command(label="Exit")
self.subMenu2.add_command(label="About")
self.subMenu2.add_command(label="Help")



self.data = Listbox (self, bg='red')
scrollbar = Scrollbar(self.data, orient=VERTICAL)

self.add = Button(self, text="")
self.remove = Button(self, text="")
self.run = Button(self, text="")
self.stop = Button(self, text="")

self.data.grid (row=0, column=0, rowspan=4, columnspan=4, sticky=N+E+S+W)
self.data.columnconfigure(1, weight=1)
self.data.columnconfigure(3, weight=1)

self.add.grid(row=4,column=0,sticky=EW)
self.remove.grid(row=4,column=1,sticky=EW)
self.run.grid(row=4,column=2,sticky=EW)
self.stop.grid(row=4,column=3,sticky=EW)
scrollbar.grid(column=5, sticky=N+S)

最佳答案

列表框中没有任何内容,就没有任何内容可以滚动...

这似乎可行(稍微缩短了示例)。另请参阅 scrollbar documentation 中的示例.

class Application(Frame):   
def __init__(self, master=None):
Frame.__init__(self, master)
self.grid(sticky=N+S+E+W)
self.mainframe()

def mainframe(self):
self.data = Listbox(self, bg='red')
self.scrollbar = Scrollbar(self.data, orient=VERTICAL)
self.data.config(yscrollcommand=self.scrollbar.set)
self.scrollbar.config(command=self.data.yview)

for i in range(1000):
self.data.insert(END, str(i))

self.run = Button(self, text="run")
self.stop = Button(self, text="stop")

self.data.grid(row=0, column=0, rowspan=4,
columnspan=2, sticky=N+E+S+W)
self.data.columnconfigure(0, weight=1)

self.run.grid(row=4,column=0,sticky=EW)
self.stop.grid(row=4,column=1,sticky=EW)

self.scrollbar.grid(column=2, sticky=N+S)

a = Application()
a.mainframe()
a.mainloop()

关于python - 使用 tkinter 的网格内的可滚动列表框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10870855/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com