我想创建此接口类型:https : //prnt.sc/oqprzp
我在编程方面的知识不是最好的,并且我在只使用少量JavaScript之前也没有使用python。我对任何有关如何创建整个接口类型而不是其中的计算的建议感到满意。非常感谢您的帮助。(我来自德国,这就是为什么代码中包含一些德语单词的原因。我希望它们不会造成麻烦。)
我试图查找基础知识以及其中的一些内容,但是在这里找不到可以帮助我的内容。正如您在以下代码中看到的那样,我只做了按钮,它们按预期工作。我也不确定如何将它们放入屏幕截图中的右下角。
from tkinter import *
#Erstellung des GUI
GUI = Tk()
GUI.title("GUI - Querschnittswerte berechnen eines Trapezes")
GUI.geometry("1000x600")
#Erstellung der Buttons
class Buttons:
def __init__(self, master):
frame = Frame(master)
frame.pack()
self.calculateButton = Button(frame, text = "Querschnittswerte berechnen", command=self.printMessage)
self.calculateButton.pack(side=LEFT)
self.printButton = Button(frame, text="Zusammenfassung/Drucken", command=self.printMessage)
self.printButton.pack(side=LEFT)
self.quitButton = Button(frame, text="Beenden", command=frame.quit)
self.quitButton.pack(side=LEFT)
def printMessage(self):
print("Wird ausgeführt... Fehler entstanden und kann dadurch nicht ausgeführt werden.")
b = Buttons(GUI)
GUI.mainloop()
除了有条不紊地分析布局以查看是否可以发现某些图案外,没有其他特殊技术。
例如,我看到一些非常清晰的模式:
我将从为每个部分创建框架开始。在最初的开发过程中,我将为它们提供独特的颜色,以使其易于可视化,并临时给空框架指定尺寸,以使其可见。
另外,我将创建一个函数或类来表示每个部分,以更好地组织代码。
由于最高级别结构的布局相对简单,pack
因此可能是布局它们的正确工具。
import tkinter as tk
from tkinter import ttk
class Example():
def __init__(self):
self.root = tk.Tk()
self.root.geometry("800x400")
left = self.create_left(self.root)
right = self.create_right(self.root)
buttons = self.create_buttons(self.root)
buttons.pack(side="bottom", fill="x")
left.pack(side="left", fill="both", expand=True)
right.pack(side="right", fill="both", expand=True)
def create_left(self, master):
frame = tk.Frame(master, background="bisque", height=200)
return frame
def create_right(self, master):
frame = tk.Frame(master, background="yellow", height=200)
return frame
def create_buttons(self, master):
frame = tk.Frame(master, background="orange", height=40)
return frame
example = Example()
tk.mainloop()
这样,您可以运行该程序并使主要部分可视化。您还可以在调整窗口大小时验证这些部分的行为是否正确。
接下来,对每个部分重复此过程。例如,通过修改create_right
为以下内容,将笔记本添加到右侧部分:
def create_right(self, master):
frame = tk.Frame(master, background="yellow", height=200)
self.notebook = ttk.Notebook(frame)
self.notebook.pack(fill="both", expand=True)
self.tab1 = tk.Frame(self.notebook, background="lightblue")
self.tab2 = tk.Frame(self.notebook, background="yellow")
self.notebook.add(self.tab1, text="Eingabe der Profildaten")
self.notebook.add(self.tab2, text="Querschnittswerte des Profils")
return frame
当您运行该程序时,某些比例会发生变化,因为您要添加更多的小部件。不用担心,当您在左侧和底部添加小部件时,所有内容都会继续显示。
现在,使用相同的技术处理左侧。进行修改create_left
,如下所示。虽然通常我会用pack
在这里,我将使用网格在这个例子,是想证明你可以混合和匹配grid
,并pack
在不同的部分。
def create_left(self, master):
frame = tk.Frame(master, background="bisque", height=200)
lf1 = tk.LabelFrame(frame, borderwidth=2, relief="groove",
text="Profildarstellung")
lf2 = tk.LabelFrame(frame, borderwidth=2, relief="groove",
text="Koordinatensystem im Schwerpunkt",)
lf1.grid(row=0, column=0, sticky="nsew", padx=10, pady=10)
lf2.grid(row=1, column=0, sticky="nsew", padx=10, pady=10)
frame.grid_rowconfigure((0,1), weight=1)
frame.grid_columnconfigure(0, weight=1)
return frame
除了创建函数,您还可以使用类。如果该类继承自Frame
,则可以将其与其他tkinter小部件一样对待,以与其他小部件进行布局。例如,create_buttons
您可以实例化一个类,而不是调用:
class Example():
def __init__(self):
...
buttons = Buttons(self.root)
buttons.pack(side="bottom", fill="x")
...
然后,创建一个从其他小部件继承的类,以便可以像其他任何小部件一样将其放置在UI中。这就是Frame
小部件的目的。
class Buttons(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master, background="orange")
self.calculateButton = ttk.Button(self, text = "Querschnittswerte berechnen")
self.printButton = ttk.Button(self, text="Zusammenfassung/Drucken")
self.quitButton = ttk.Button(self, text="Beenden")
self.quitButton.pack(side="right", padx=4, pady=4)
self.printButton.pack(side="right", padx=4, pady=4)
self.calculateButton.pack(side="right", padx=4, pady=4)
继续每次一次建立您的GUI区域,并进行测试以确保在调整窗口大小时布局保持正确。拥有所有部件后,您可以返回并删除颜色和硬编码的框架大小,以使UI更加美观。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句