【问题标题】:Add Vertical Scrollbar in main window, with Tkinter and grid manager在主窗口中添加垂直滚动条,使用 Tkinter 和网格管理器
【发布时间】:2018-01-30 21:03:44
【问题描述】:

我试图在主窗口 (janela) 中添加一个滚动条,只看到第 33 行。使用网格方法,但这对我来说似乎是不可能的。我已经明白应该使用画布,但我无法根据我的情况调整示例。

有办法吗?

from tkinter import *
import sqlite3
from tkinter.ttk import Combobox

janela = Tk()

yscrollbar = Scrollbar(janela, orient=VERTICAL)

yscrollbar.grid(row=2, rowspan=50, column=40, sticky=N + S)

canvas = Canvas(janela, bd=0, width=1, heigh=1)

canvas.grid(row=0, column=0, sticky=N + S + E + W)

yscrollbar.config(command=canvas.yview)

canvas.config(yscrollcommand=yscrollbar.set, scrollregion=(0, 0, 100, 100))

    class Frames(object):

        def __init__(self):
            pass    

        def main_frame(self, janela):
            janela.geometry("1200x600+100+100")
            cota1 = (Label(janela, text="1", width=7,font=("Calibri", "12"))).grid(row=4, column=6)
            cota2 = (Label(janela, text="2", width=7,font=("Calibri", "12"))).grid(row=5, column=6)
            cota3 = (Label(janela, text="3", width=7,font=("Calibri", "12"))).grid(row=6, column=6)
            cota4 = (Label(janela, text="4", width=7,font=("Calibri", "12"))).grid(row=7, column=6)
            cota5 = (Label(janela, text="5", width=7,font=("Calibri", "12"))).grid(row=8, column=6)
            cota6 = (Label(janela, text="6", width=7,font=("Calibri", "12"))).grid(row=9, column=6)
            cota7 = (Label(janela, text="7", width=7,font=("Calibri", "12"))).grid(row=10, column=6)
            cota8 = (Label(janela, text="8", width=7,font=("Calibri", "12"))).grid(row=11, column=6)
            cota9 = (Label(janela, text="9", width=7,font=("Calibri", "12"))).grid(row=12, column=6)
            cota10 = (Label(janela, text="10", width=7,font=("Calibri", "12"))).grid(row=13, column=6)
            cota11 = (Label(janela, text="11", width=7,font=("Calibri", "12"))).grid(row=14, column=6)
            cota12 = (Label(janela, text="12", width=7,font=("Calibri", "12"))).grid(row=15, column=6)
            cota13 = (Label(janela, text="13", width=7,font=("Calibri", "12"))).grid(row=16, column=6)
            cota14 = (Label(janela, text="14", width=7,font=("Calibri", "12"))).grid(row=17, column=6)
            cota15 = (Label(janela, text="15", width=7,font=("Calibri", "12"))).grid(row=18, column=6)
            cota16 = (Label(janela, text="16", width=7,font=("Calibri", "12"))).grid(row=19, column=6)
            cota17 = (Label(janela, text="17", width=7,font=("Calibri", "12"))).grid(row=20, column=6)
            cota18 = (Label(janela, text="18", width=7,font=("Calibri", "12"))).grid(row=21, column=6)
            cota19 = (Label(janela, text="19", width=7,font=("Calibri", "12"))).grid(row=22, column=6)
            cota20 = (Label(janela, text="20", width=7,font=("Calibri", "12"))).grid(row=23, column=6)
            cota21 = (Label(janela, text="21", width=7,font=("Calibri", "12"))).grid(row=24, column=6)
            cota22 = (Label(janela, text="22", width=7,font=("Calibri", "12"))).grid(row=25, column=6)
            cota23 = (Label(janela, text="23", width=7,font=("Calibri", "12"))).grid(row=26, column=6)
            cota24 = (Label(janela, text="24", width=7,font=("Calibri", "12"))).grid(row=27, column=6)
            cota25 = (Label(janela, text="25", width=7,font=("Calibri", "12"))).grid(row=28, column=6)
            cota26 = (Label(janela, text="26", width=7,font=("Calibri", "12"))).grid(row=29, column=6)
            cota27 = (Label(janela, text="27", width=7,font=("Calibri", "12"))).grid(row=30, column=6)
            cota28 = (Label(janela, text="28", width=7,font=("Calibri", "12"))).grid(row=31, column=6)
            cota29 = (Label(janela, text="29", width=7,font=("Calibri", "12"))).grid(row=32, column=6)
            cota30 = (Label(janela, text="30", width=7,font=("Calibri", "12"))).grid(row=33, column=6)

        def Antunes_frame(self):
            janelaAC_96 = Toplevel()
            janelaAC_96.geometry("1400x750+150+150")


app = Frames()
app.main_frame(janela)
janela.mainloop()

【问题讨论】:

  • 除了你的滚动条问题,你应该看看这个关于使用循环创建多个小部件的问题。 stackoverflow.com/questions/27067094/…
  • 为什么你不能将其他示例应用到你的代码中?是什么阻止了你?
  • FWIW,您的所有变量(cota1cota2 等)都将设置为 None。见stackoverflow.com/a/1101765/7432
  • 我不知道有些东西是做什么的,比如“class Frames (object)”或“def __init __ (self):”。我正在慢慢吸收这一点,但这令人沮丧。我的程序有6500行,看的我还是看不懂。
  • 关于如何将滚动条添加到小部件网格的问题已经有一个已接受的答案。除非您可以改写您的问题以向我们展示您的尝试以及失败的原因,否则此问题可能会作为重复问题关闭。

标签: canvas tkinter scrollbar


【解决方案1】:

好的,现在开始工作!这个帖子救了我。 Python Tkinter Canvas Scrollbar with Grid

from tkinter import *
import sqlite3
from tkinter.ttk import Combobox


mFrame = Tk()
mFrame.geometry("1300x775")
mFrame.configure(background="Gray")
mFrame.columnconfigure(0, weight=1)
mFrame.rowconfigure(0, weight=1)

frame_canvas = Frame(mFrame)
frame_canvas.grid(row=0, column=0, sticky='news')

Can1 = Canvas(frame_canvas, width=2000, height=2000)
Can1.grid(row=0, column=0)

vsbar = Scrollbar(frame_canvas, orient="vertical", command=Can1.yview)
vsbar.grid(row=0, column=1, sticky='ns')
Can1.configure(yscrollcommand=vsbar.set)

janela = Frame(Can1)
Can1.create_window((0,0), window=janela,anchor='nw')

class Frames(object):
    def __init__(self):
        pass

    def main_frame(self, janela):

    def Antunes_frame(self):

app = Frames()
app.main_frame(janela)
janela.mainloop()

mFrame.mainloop()

【讨论】:

    猜你喜欢
    • 2014-01-31
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-26
    • 2012-05-08
    • 2019-11-30
    相关资源
    最近更新 更多