我正在尝试创建一个GUI,如附图所示
我编写了以下代码来完成工作但不是我需要它的方式。
try:
import Tkinter as tk
import tkMessageBox as mb
except ImportError:
import tkinter as tk
import tkinter.messagebox as mb
root = tk.Tk()
root.geometry("500x300")
tk.Label(root, text="Python First GUI Template", bg="goldenrod", font="bold").pack()
tk.Label(root, text="").pack()
def addFn():
a = int(input('enter first number'))
b = int(input('enter second number'))
mb.showinfo('showinfo', a+b)
def subtractFn():
a = int(input('enter first number'))
b = int(input('enter second number'))
mb.showinfo('showinfo', a - b)
tk.Button(root, text="Add Function", bg="SkyBlue1", command=addFn).pack()
tk.Label(root, text="").pack()
tk.Button(root, text="Subtract Function", bg="SkyBlue1", command=subtractFn).pack()
root.mainloop()
所以,我有以下问题:
(1)我无法在附加图片中根据“添加”和“减去”按钮的相对颜色和相对位置创建设计。
(2)当我点击按钮激活“添加”或“减去”功能时,控制台上需要输入。我需要弹出一个输入框,然后下拉两个我要添加的数字。我正在寻找“添加”功能的以下格式。
(3)我想在完成后添加一个“退出”按钮来关闭控制台
答案 0 :(得分:2)
我自己也是新手,很遗憾无法解答大部分问题,但对于退出按钮,我认为你可以编写一个调用quit()的函数,只是就像你要输入以退出Python交互式解释器一样。然后将该功能链接到按钮,就像前两个按钮一样。这与lambda表达式的想法相同:
from tkinter import *
root =Tk()
root.geometry("500x300")
Button(root,text="QUIT",bg='Red',command=lambda:(quit())).pack(side=BOTTOM)
root.mainloop()
这是一个TKinter框架,底部为您提供一个红色退出按钮,其唯一的存在理由是退出它所在的框架。
关于布局,我认为pack方法要求你指明包装应该放置小部件的位置,但不能给你很多绝对控制。不会网格方法允许更好的对齐吗?
为什么输入框必须弹出?为什么他们不能嵌入到应用程序框架中?我认为这会消除这个问题的一些困难,不是吗?
对不起,这不是最有帮助的答案......但是我希望它会给你一些合作的东西,直到有更多知识渊博的人发生。干杯。
答案 1 :(得分:1)
有两种方法可以做到这一点,最简单的方法是使用.grid()
代替.pack()
:
from tkinter import *
root = Tk()
title = Label(root, text="Python First GUI Template")
add = Button(root, text="Add")
subtract = Button(root, text="Subtract")
_quit = Button(root, text="Quit")
title.grid(row=0, column=1, padx=5, pady=5)
add.grid(row=1, column=0, padx=5, pady=5)
subtract.grid(row=1, column=2, padx=5, pady=5)
_quit.grid(row=2, column=3, padx=5, pady=5)
root.mainloop()
.grid()
允许您以网格方式在窗口上放置小部件,想象您将每个小部件放入的单元格,而.pack()
默认情况下会将项目堆叠在彼此的顶部,除非某些属性是给定的值。
您还可以使用.place()
,它允许您根据坐标放置小部件,但这需要更多的努力来响应窗口大小更改或添加新的小部件等。
另外,Stack Overflow不是免费的编程资源,我们不会根据需求列表为您编写程序。有很多自由职业程序员乐于换取金钱。我建议将来不要问一个关于Stack Overflow上有超过17000个问题的难以置信的文档库的问题,其中很多是关于三个几何管理器的差异,而是找到一个教程或问一个同事,同学,老师或朋友寻求帮助。