问题将滚动条添加到TKINTER中的画布
我一直在关注许多有关如何在画布中添加滚动条的教程,但是,我遇到了许多无法解决的问题。起初,我尝试直接将滚动条添加到帆布中,但是将卷轴涂成灰色,如下所示。
https://i.sstatic.net/kfhvg.png
def student_menu():
csr = db.cursor()
student_window = tk.Toplevel(root)
student_window.title("Student Menu")
student_window.geometry("700x500")
label = tk.Label(student_window, text = "Welcome to the student menu")
label.grid(row = 0, column = 0, columnspan = 2)
canvas = tk.Canvas(student_window, width = 700, height = 500)
canvas.grid(row = 1, column = 0, columnspan = 2)
scrollbar = tk.Scrollbar(student_window, orient = "vertical", command =
canvas.yview)
scrollbar.grid(row = 1, column = 2, sticky = "ns")
canvas.configure(yscrollcommand = scrollbar.set)
csr.execute("USE miniia")
csr.execute("SELECT * FROM students")
data = csr.fetchall()
i = 0
for row in data:
for j in range(len(row)):
e = tk.Entry(canvas, width = 20)
e.grid(row = i + 1, column = j)
e.insert(0, row[j])
i += 1
csr.close()
尝试尝试用相关表嵌入画布中的框架,然后将入口小部件表嵌入其中以滚动。但是,桌子上出现了一个奇怪的灰色盒子,否则在下面显示了正确的滚动轮和功能。
https://i.sstatic.net/vazgi.png
相关代码:
def student_menu():
csr = db.cursor()
student_window = tk.Toplevel(root)
student_window.title("Student Menu")
student_window.geometry("700x500")
label = tk.Label(student_window, text = "Welcome to the student menu")
label.grid(row = 0, column = 0, columnspan = 2)
frame = tk.Frame(student_window)
frame.grid(row = 1, column = 0, columnspan = 2)
csr.execute("USE miniia")
csr.execute("SELECT * FROM students")
data = csr.fetchall()
i = 0
for row in data:
for j in range(len(row)):
e = tk.Entry(frame, width = 20)
e.grid(row = i + 1, column = j)
e.insert(0, row[j])
i += 1
csr.close()
canvas = tk.Canvas(student_window, width = 700, height = 500)
canvas.grid(row = 1, column = 0, columnspan = 2)
canvas.create_window(0, 0, anchor = 'nw', window = frame)
frame.update_idletasks()
canvas.config(scrollregion = canvas.bbox('all'))
scrollbar = tk.Scrollbar(student_window, orient = 'vertical', command =
canvas.yview)
scrollbar.grid(row = 1, column = 3, sticky = 'ns')
canvas.config(yscrollcommand = scrollbar.set)
我不知道如何从这里继续。
I have been following many tutorials on how to add a scroll bar to a canvas, however, I've run into a number of problems that I am not able to solve. at first, I tried directly adding a scrollbar to the canvas however the scrollbar would be greyed out as shown below.
https://i.sstatic.net/KfHvg.png
and the relevant code:
def student_menu():
csr = db.cursor()
student_window = tk.Toplevel(root)
student_window.title("Student Menu")
student_window.geometry("700x500")
label = tk.Label(student_window, text = "Welcome to the student menu")
label.grid(row = 0, column = 0, columnspan = 2)
canvas = tk.Canvas(student_window, width = 700, height = 500)
canvas.grid(row = 1, column = 0, columnspan = 2)
scrollbar = tk.Scrollbar(student_window, orient = "vertical", command =
canvas.yview)
scrollbar.grid(row = 1, column = 2, sticky = "ns")
canvas.configure(yscrollcommand = scrollbar.set)
csr.execute("USE miniia")
csr.execute("SELECT * FROM students")
data = csr.fetchall()
i = 0
for row in data:
for j in range(len(row)):
e = tk.Entry(canvas, width = 20)
e.grid(row = i + 1, column = j)
e.insert(0, row[j])
i += 1
csr.close()
my second attempt tried to embed a frame in the canvas with the relevant table and then embed the table of entry widgets in it to scroll that. however, a strange grey box appeared over the table which otherwise has a correct scroll wheel and functionality shown below.
https://i.sstatic.net/VaZGI.png
relevant code:
def student_menu():
csr = db.cursor()
student_window = tk.Toplevel(root)
student_window.title("Student Menu")
student_window.geometry("700x500")
label = tk.Label(student_window, text = "Welcome to the student menu")
label.grid(row = 0, column = 0, columnspan = 2)
frame = tk.Frame(student_window)
frame.grid(row = 1, column = 0, columnspan = 2)
csr.execute("USE miniia")
csr.execute("SELECT * FROM students")
data = csr.fetchall()
i = 0
for row in data:
for j in range(len(row)):
e = tk.Entry(frame, width = 20)
e.grid(row = i + 1, column = j)
e.insert(0, row[j])
i += 1
csr.close()
canvas = tk.Canvas(student_window, width = 700, height = 500)
canvas.grid(row = 1, column = 0, columnspan = 2)
canvas.create_window(0, 0, anchor = 'nw', window = frame)
frame.update_idletasks()
canvas.config(scrollregion = canvas.bbox('all'))
scrollbar = tk.Scrollbar(student_window, orient = 'vertical', command =
canvas.yview)
scrollbar.grid(row = 1, column = 3, sticky = 'ns')
canvas.config(yscrollcommand = scrollbar.set)
I have no idea how to continue from here.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论