为了账号安全,请及时绑定邮箱和手机立即绑定

如果我添加滚动条,所有标签都会消失

如果我添加滚动条,所有标签都会消失

白猪掌柜的 2023-06-27 17:36:40
在我的程序中,我想添加很多标签,并且要查看所有标签,它们需要滚动条。如果我在代码中添加滚动条,那么所有标签都会消失。我对长代码表示歉意,由于某种原因,如果没有所有额外的代码,我就无法让它工作。没有滚动条的代码:from tkinter import *from functools import partialwords = ["test", "test", "test", "test", "test", "test", "test", "test", "test", "test", "test", "test", "test", "test"]def validateLogin(password):    print(password.get())    if password.get() == "test":        newWindow = Tk()        newWindow.geometry('1800x800')        newWindow.title("Passwords")        tkWindow.destroy()        for index, word in enumerate(words):            Label(newWindow, text=word).grid(row=index, column=0)    if password.get() != "test":        Label(tkWindow, text="Wrong password!", fg='red').grid(row=5, column=2)#windowtkWindow = Tk()tkWindow.geometry('250x100')tkWindow.title('Passwords')#password label and password entry boxpasswordLabel = Label(tkWindow,text="Password").grid(row=1, column=0)password = StringVar()passwordEntry = Entry(tkWindow, textvariable=password, show='*').grid(row=1, column=2)validateLogin = partial(validateLogin, password)#login buttonloginButton = Button(tkWindow, text="Login", command=validateLogin).grid(row=4, column=2)tkWindow.mainloop()带滚动条的代码:from tkinter import *from functools import partialwords = ["test", "test", "test", "test", "test", "test", "test", "test", "test", "test", "test", "test", "test", "test"]def validateLogin(password):    print(password.get())    if password.get() == "test":        newWindow = Tk()        newWindow.geometry('1800x800')        newWindow.title("Passwords")        scrollbar = Scrollbar(newWindow)        scrollbar.pack(side=RIGHT, fill=Y)        tkWindow.destroy()        for index, word in enumerate(words):            Label(newWindow, text=word).grid(row=index, column=0)    if password.get() != "test":        Label(tkWindow, text="Wrong password!", fg='red').grid(row=5, column=2)
查看完整描述

1 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

我在这里看到两个问题,第一个问题是您尝试用于.grid显示文本的标签,并用于.pack滚动条。您不能在同一窗口中同时使用.grid和。.pack


.grid(row=index, column=0)这是我通过替换来纠正此问题的代码.pack(anchor = W)


from tkinter import *

from functools import partial



words = ["test", "test", "test", "test", "test", "test", "test", "test", "test", "test", "test", "test", "test", "test"]

def validateLogin(password):

    print(password.get())

    if password.get() == "test":

        newWindow = Tk()

        newWindow.geometry('1800x800')

        newWindow.title("Passwords")

        scrollbar = Scrollbar(newWindow)

        scrollbar.pack(side=RIGHT, fill=Y)

        tkWindow.destroy()

        for index, word in enumerate(words):

            Label(newWindow, text=word).pack(anchor = W)


    if password.get() != "test":

        Label(tkWindow, text="Wrong password!", fg='red').grid(row=5, column=2)


#window

tkWindow = Tk()

tkWindow.geometry('250x100')

tkWindow.title('Passwords')


#password label and password entry box

passwordLabel = Label(tkWindow,text="Password").grid(row=1, column=0)

password = StringVar()

passwordEntry = Entry(tkWindow, textvariable=password, show='*').grid(row=1, column=2)


validateLogin = partial(validateLogin, password)


#login button

loginButton = Button(tkWindow, text="Login", command=validateLogin).grid(row=4, column=2)


tkWindow.mainloop()

第二个问题是滚动条实际上没有用。我不相信滚动条本身就可以在 tkinter 中的窗口/框架上工作。这意味着修复原始问题后,标签和滚动条现在都会加载,但滚动条不会执行任何操作。

查看完整回答
反对 回复 2023-06-27
  • 1 回答
  • 0 关注
  • 176 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信