我在正确查看大按钮 (643) 框架时遇到问题, 我还遇到过其他问题,例如。
canvas.create_window
来解决这个问题。canvas
窗口的内容从侧面溢出canvas
包含在顶级框架而不是根窗口中来修复此问题。但现在我对所有内容的查看和使用能力都陷入了僵局,我不想诉诸
ttk notebook
选项卡列表,因为这看起来很粗糙。
这个问题似乎是问题 2 的一个子部分,因为按钮是根据我的屏幕尺寸渲染的,而这本身似乎就困扰了一些人。
这个问题的一个较小的补充似乎是滚动条留下了大量的空间,留下大量的空间可供使用,如果我找到它,我会发布我自己的问题的答案。通常我不会问问题,但为未来的开发人员留下线索是很好的,
import tkinter as tk
from tkinter import BOTH, BOTTOM, LEFT, RIGHT, TOP, X, Y, Button, Canvas, Frame, Tk
import matplotlib
import tkinter.ttk as ttk
import sys
# caution: path[0] is reserved for script path (or '' in REPL)
sys.path.insert(1, "/home/will/Projects/CoinBaseADVtrade_Data")
import Data
class GUI(Tk):
def __init__(self):
super().__init__()
self.top_frame = Frame(self)
self.top_frame.pack(side=TOP, )
self.canvas = Canvas(self.top_frame, bg="Black",width=177)
self.frame = Frame(self.top_frame,height=20,width=400)
self.vsb = tk.Scrollbar(self.top_frame, orient="vertical", command=self.canvas.yview)
self.canvas.configure(yscrollcommand=self.vsb.set)
self.vsb.pack(side=RIGHT, fill=Y)
self.canvas.pack(side=TOP,)
self.canvas.create_window((0,0),window=self.frame,anchor="n")
self.frame.bind("<Configure>", lambda event, canvas=self.canvas: canvas.configure(scrollregion=canvas.bbox("all")))
self.populate(self.frame)
def populate(self,frame):
products = Data.Products().list_products()
for i in range(len(products)):
print(products.iloc[i].name)
Button(frame,height =5,width = 20,text=products.iloc[i].name).pack(side=TOP, padx=5,pady=3)
pass
GUI().mainloop()
我尝试过像 Y 视图这样更好地包含画布 这两种解决方案都没有产生任何结果,并且被证明弄乱了我的代码
编辑:回到问题背后的想法是一个可滚动窗口,我正在寻找的是这个链接https://tkdocs.com/tutorial/canvas.html#scrolling
根据之前推荐listview的评论,虽然对糟糕代码的良好升级,但我还是求助于TTK.treeview。因为我相信从最小到复杂的跳转值得完全跳转,并且出于我的目的列出视图在各个方面都会更好,
其他人可能会发现列表视图比我更有益。