【问题标题】:How to dynamically resize window with Tkinter?如何使用 Tkinter 动态调整窗口大小?
【发布时间】:2020-11-22 10:51:54
【问题描述】:
root= tk.Tk()
root.title('Quick Googling')
canvas1 = tk.Canvas(root, width = 400, height = 300)
canvas1.pack()

entry1 = tk.Entry (root) 
canvas1.create_window(200, 140, window=entry1)
canvas1.config(background="#8FB1CC"

button1 = tk.Button(text='Search Google', bg = "blue")
canvas1.create_window(200, 180, window=button1)

当窗口大小改变时,我希望我的窗口颜色以及条目和按钮能够利用所有空间。

【问题讨论】:

  • 您的代码没有做任何事情?,请参阅How to Ask 一个问题,并生成一个minimal reproducible example
  • 有几种方法可以实现这一目标。我的第一个问题是,你为什么在这里使用画布?您介意使用框架吗?
  • 我对画布没有任何偏好,如果框架更适合我会更喜欢它们。
  • 您意识到您的代码无法运行吧?
  • 只需将根背景颜色设置为您想要的任何颜色?喜欢,root.config(bg='#8FB1CC')

标签: python tkinter


【解决方案1】:

如果您使用框架,tkinter 的几何管理器正在为您完成这项工作:

import tkinter as tk

root= tk.Tk()
root.title('Quick Googling')
myframe = tk.Frame(root)
myframe.pack(fill='both',expand=True)

entry1 = tk.Entry (myframe,background="#8FB1CC")
entry1.pack(fill='x')

button1 = tk.Button(myframe,text='Search Google', bg = "blue")
button1.pack(fill='both',expand=1)
root.mainloop()

看看small overview我写的基础知识。

  1. 填充从属横向、纵向或同时展开拉伸
  2. 应扩展从属服务器以占用其主服务器中的额外空间。

所以上面的代码所做的就是以它的自然大小创建一个frame,这意味着它将自己缩小到它需要安排孩子的最小空间。

在此之后,我们第一次使用geometry manager pack 并提供选项 fill,它告诉框架 stretch 和使用可选参数 expand 来消耗额外的空间。它们一起调整您的框架与窗口的大小,因为其中没有其他内容。

之后,我们创建一个Entry 并再次使用pack 方法将它与这个几何管理器一起安排。我们再次使用可选参数 fill 并给出值 'x',它告诉几何管理器垂直拉伸从属/条目

因此,如果框架展开,条目会垂直拉伸。

至少我们创建一个Button 并使用已知的关键字,让它随着框架调整大小。

【讨论】:

  • 我怎样才能填满它的长度?其余的工作。
  • @SamrathChadha 有未解决的问题吗?
  • 究竟什么是开放式问题?我是 stackoverflow 的新手
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-24
  • 2016-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多