【问题标题】:Please help me find the error in the code?请帮我找出代码中的错误?
【发布时间】:2021-07-18 13:42:44
【问题描述】:

我正在尝试将一个框架放入 tkinter 中的另一个框架内。有人可以解释为什么它不起作用吗?我刚开始学习 Tkinter。

from tkinter import *
from PIL import *
if __name__=="__main__":
  root = Tk()
  root.title("Sales")
  root.geometry("1440x855")
  root.resizable(0, 0)
  Label(root, text = 'Tax Invoice').pack(side = TOP, pady = 6)
  frame1 = Frame(root,bg="black",width=1400,height=780).pack()
  frame2 = Frame(frame1,bg="green",width=100,height=100).pack()
  top.mainloop()

【问题讨论】:

  • frame1 始终是 None 而不是 tkinter.Frame 对象。欲了解更多信息,请阅读this
  • frame1 = Frame(root,bg="black",width=1400,height=780).pack() 更改为frame1 = Frame(root,bg="black",width=1400,height=780)frame1.pack()
  • 第一个你需要更改top.mainloop() 更改为root.mainloop() 小拼写错误有时会导致大错误 区分大小写和拼写会在我们的代码中产生问题
  • 什么是“错误”?您可以在问题中添加任何错误消息吗?
  • 请不要用Editor/IDE标记代码问题,这与代码错误无关。

标签: python-3.x user-interface tkinter frame


【解决方案1】:

试试这个:

import tkinter as tk

if __name__ == "__main__":
    root = Tk()
    root.title("Sales")
    root.geometry("1440x855")
    root.resizable(False, False)

    label = tk.Label(root, text="Tax Invoice")
    label.pack(side="top", pady=6)

    frame1 = Frame(root, bg="black", width=1400, height=780)
    frame1.pack()
    frame2 = Frame(frame1, bg="green", width=100, height=100)
    frame2.pack()

    root.mainloop()

基本上应用了@Ramesh 和我在 cmets 中所说的内容。

【讨论】:

  • 我尝试了这段代码,它给出了一个错误,即第一帧没有出现在屏幕上。
  • @AMI 第二帧是否出现在屏幕上?
  • 是的。但只出现第二帧。
  • @AMI 我的猜测是第一帧调整大小以适合其所有子小部件(第二帧),这就是您看不到它的原因。如果您仍在其中使用pack,请尝试添加frame1.pack_propagate(False)
猜你喜欢
  • 2011-10-22
  • 2021-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-26
  • 2012-08-18
相关资源
最近更新 更多