【问题标题】:Placing Tkinter Frame in another Frame将 Tkinter 帧放在另一个帧中
【发布时间】:2018-11-05 19:25:38
【问题描述】:

我正在尝试让按钮仅在单击按钮时显示标签,而不是打开另一个 GUI 窗口。主框架称为秘密消息。在此范围内,当我单击按钮时,它应该将空白位置替换为row=2 中的标签。

有人可以向我解释我如何提高标签而不是仅仅打开一个新窗口。所有代码都可以正常工作,但我想要另一种解决方法,我是 python 新手。

from tkinter import *

def topLevel():
    top=Toplevel()
    top.geometry("300x200")

root=Tk()
root.title("Secret Message")

button1 = Button(text="Push this button to see hidden message!", width =60, command=topLevel)
button1.grid(row=1, column=0)    

label1 = Label(width=50, height=10, background="WHITE", text= "There is no secret!")
label1.grid(row=2, column=0)

root.mainloop()

【问题讨论】:

  • 您需要告诉您的小部件要在哪个容器中。现在它们默认为根窗口。你认为当你按下按钮时标签会如何显示?您所做的所有功能就是打开一个顶层窗口。在这个例子中你甚至没有指定一个框架,所以也许你应该重写你的问题标题。

标签: python python-3.x class tkinter frame


【解决方案1】:

您的问题标题与您的问题无关。

要更新标签的几何形状,您只需告诉函数您希望标签在您设置标签的容器上的位置。在这种情况下,您无需定义容器,因此小部件默认为根窗口。

这是一个工作示例,当您按下按钮时将更新标签几何图形。

from tkinter import *


root=Tk()
root.title("Secret Message")

def grid_label():
    label1.config(text="There is no secret!")

Button(root, text="Push this button to see hidden message!", width=60, command=grid_label).grid(row=1, column=0)    
label1 = Label(root, width=50, height=10, background="WHITE")
label1.grid(row=2, column=0)

root.mainloop()

【讨论】:

  • 我正在尝试获取一个在按钮下方带有空白标签的主框架,当您单击主框架中的按钮时,它应该与下方的空白标签框重叠,然后添加“没有秘密!”。完全在一个新标签中。所以一个框架中的框架,我的标题很适合这个目的,只是不确定如何去做,你能帮忙吗?
  • @pythonewbie 我已经更新了我的答案。您对框架的理解是不正确的。你的意思是一个容器。 “框架”是 tkinter 中的一个实际模块,它是几个容器之一。
  • 对不起先生,我还在学习。下次我会尝试以不同的方式布局我的代码。
猜你喜欢
  • 1970-01-01
  • 2021-10-25
  • 2014-08-10
  • 2015-10-02
  • 1970-01-01
  • 1970-01-01
  • 2018-06-17
  • 2018-10-18
  • 1970-01-01
相关资源
最近更新 更多