【发布时间】:2022-01-05 13:19:51
【问题描述】:
我正在尝试将滚动条插入到充满按钮的画布中(按钮也可以切换为可点击的文本)。
谁能帮忙找出代码有什么问题?
系统:Windows 10,python 3.9.6。
import tkinter as tk
class tWindow(tk.Tk):
frame = None
canvas = None
scrollbar = None
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.geometry("640x480+50+50")
self.setup_frame()
self.setup_canvas()
def setup_frame(self):
self.frame = tk.Frame(master=self, width=640, height=480)
self.frame.configure(bg="#003163")
self.frame.place(x=0, y=0)
def setup_canvas(self):
self.update()
self.canvas = tk.Canvas(master=self.frame, bg="#006331",
width=int(self.frame.winfo_width() / 4), height=self.frame.winfo_height())
self.canvas.place(x=0, y=0)
self.update()
# self.scrollbar = tk.Scrollbar(master=self.canvas, orient=tk.VERTICAL)
# self.scrollbar.pack(side=tk.RIGHT, fill=tk.BOTH, expand=tk.TRUE)
# self.canvas.configure(yscrollcommand=self.scrollbar.set)
# self.scrollbar.configure(command=self.canvas.yview)
# self.update()
tmp_pos = 0
for i in range(20):
btn_tmp = tk.Button(master=self.canvas, text=f"testing testing testing testing testing {i:02} ...",
justify=tk.LEFT, wraplength=self.canvas.winfo_width(), bg="#00c0c0", fg="#000000")
btn_tmp.place(x=0, y=tmp_pos)
self.update()
tmp_pos = btn_tmp.winfo_y() + btn_tmp.winfo_height()
def main():
app = tWindow()
app.mainloop()
if __name__ == "__main__":
main()
【问题讨论】:
-
@Thingamabobs:这没有帮助,或者我无法理解。我的意图是仅为“画布”(cyan 区域)插入滚动条。使用链接中的答案,我能够将滚动条插入整个“窗口”(navy 区域)。
-
你为什么要在画布上设置滚动条?这是一个问题,不是无法解决的,但如果你不做任何事情,你的滚动条会被滚动掉。
-
@Thingamabobs: navy 区域是根据按下的按钮(位于 cyan 区域中)打印一些文本(通过 SQL) )。
标签: python python-3.x tkinter scrollbar