【问题标题】:Frame disappears with grid_propagate框架随着 grid_propagate 消失
【发布时间】:2015-02-15 19:49:10
【问题描述】:

我最近遇到了这个问题...我创建了一些框架,当我在运行之前在它们上使用grid_propagate(False) 时,窗口上的框架是空的。如果我在没有传播功能的情况下使用空闲运行它,即使我之后调用grid_propagate 方法,也会有。

import tkinter as tk

root = tk.Tk()
frame = tk.Frame(root)
text = tk.Text(frame, bg='#000000', fg='#00cc00')


frame.grid(row=0, column=0)
text.grid(row=0, column=0)
frame.grid_propagate(0)

我将特定命令放在注释字符后面。它只对我有用,当我在运行后将它们分别输入 Idle 时。

【问题讨论】:

  • 你能给出一个完整的工作程序来说明这个问题吗?您描述的症状可能是您如何将ciphertext.frame 放入ciphertextciphertext 在根窗口中的结果,以及您如何首先创建ciphertext.frame(即:您是否给它一个明确的大小?)
  • 我已经用一个简短的代码示例更新了我的问题 - 我得到了同样的错误 - 如果我在空闲运行它之前使用 grid_propagate(0),我会得到一个空窗口,当我在空闲状态下运行脚本后输入命令时,一切都表现得像它应该的那样 - 框架和文本小部件仍然是它们的,但不要改变它们的大小......希望有人能帮助我,否则我'我搞砸了:D

标签: python python-3.x tkinter frame


【解决方案1】:

当您调用grid_propagate(0) 时,您是在要求一个小部件尝试成为它所请求的大小,而忽略窗口内的任何内容。下次绘制窗口时会执行此请求。

因为您没有给框架指定尺寸,所以它默认为 1 像素宽 x 1 像素高。因此,当您在 IDLE 之外运行程序时,窗口(几乎)是不可见的。这是正确的、预期的行为。由于文本小部件位于这个 1x1 框架内,因此它也是不可见的。

您在 IDLE 中看到的行为是在 IDLE 中以交互方式运行的副作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-23
    • 2021-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多