如何解决Python - GUI 应该在单独的文件中吗?困惑
我在 2 个不同的文件中有 2 个功能 - feature1.py 和 feature2.py
我还有第三个文件 - main.py,它导入两个功能并一起使用。
所以整个程序都是从 main.py 文件运行的
我第一次开始做 GUI,我真的很困惑把代码放在哪里? 我不知道我是否应该在 main.py 中执行此操作,但是例如我无法为 feature1 添加进度条..
或
我不确定这是否重要,但我正在使用带有 tkinter 端口的 PySimpleGUI 创建 GUI。
如果这是个菜鸟问题,请见谅。
解决方法
虽然我知道有支持这两种编码风格的论据,但我创建了一个小示例,希望能阐明如何在单独的文件中进行操作。
文件 1:字符串
class String:
def __init__(self):
self.string1 = "Hello World"
def addString(self,string1,string2):
return f"{string1} {string2}"
def findLetter(self,letter):
if letter in string1:
return "Occurrence Found"
if __name__ == '__main__':
string = String()
文件 2:数学运算
class Math():
def __init__(self):
self.number1 = 1
self.number2 = 2
self.number3 = 3
self.number4 = 4
self.number5 = 5
def addition(self,addend1,addend2):
sum1 = addend1 + addend2
return sum1
def subtraction(self,subtrahend,minuend):
difference = minuend - subtrahend
return difference
def multiplication(self,factor1,factor2):
product = factor1 * factor2
return product
def division(self,dividend,divisor):
quotient = dividend / divisor
return quotient
if __name__ == '__main__':
math = Math()
文件 3:主要
import PySimpleGUI as sg
import PracticeFunction2
from PracticeFunction1 import String
def main():
math = PracticeFunction2.Math()
string = String()
sg.theme('BlueMono')
layout = [
[sg.Text("\tThis is a test",font=('Times New Roman',18,'bold'))],[sg.Text("1st Number:\t",font=('',14)),sg.Input(default_text="",size=(5,1),key='_number1_',14),justification='center')],[sg.Text("2nd Number:\t",key='_number2_',[sg.T('')],[sg.Button("Add",size=(10,key="_add_"),sg.Button("Subtract",key="_sub_"),sg.Button("Multiply",key="_mult_"),sg.Button("Divide",key="_div_")],[sg.T('Solution:\t',sg.T("\t\t",key='_solution_')],[sg.Text("1st String:\t\t",key='_string1_',[sg.Text("2nd String:\t",key='_string2_',[sg.Button("Add Strings",size=(15,key="_addString_"),sg.Button("Find Letter",key="_findLetter_")],[sg.T('Result:\t',key='_result_')],]
window = sg.Window("Multiple Files Testing",layout,finalize=True)
while True:
event,values = window.Read()
if event == sg.WIN_CLOSED:
break
if event == "_addString_":
answer = string.addString(values['_string1_'],values['_string2_'])
window['_result_'].Update(value=f"{answer}")
if event == '_findLetter_':
answer = string.findLetter(values['_string1_'],values['_string2_'])
window['_result_'].Update(value=f"{answer}")
if event == "_add_":
number1 = int(values['_number1_'])
number2 = int(values['_number2_'])
answer = math.addition(number1,number2)
window['_solution_'].Update(value=f"{answer}")
if event == "_sub_":
number1 = int(values['_number1_'])
number2 = int(values['_number2_'])
answer = math.subtraction(number1,number2)
window['_solution_'].Update(value=f"{answer}")
if event == "_mult_":
number1 = int(values['_number1_'])
number2 = int(values['_number2_'])
answer = math.multiplication(number1,number2)
window['_solution_'].Update(value=f"{answer}")
if event == "_div_":
number1 = int(values['_number1_'])
number2 = int(values['_number2_'])
answer = math.division(number1,number2)
window['_solution_'].Update(value=f"{answer}")
if __name__ == '__main__':
main()
说明:文件 1 和 2 包含每当我想使用这些方法时可由 Main 文件调用的类。我的 GUI 完全构建在 Main 文件中,只需在需要时从其他文件中提取即可。现在,如果我开始处理另一个项目,我仍然可以使用我的 Strings 类和我的 Math 类,而不必担心合并 Main 文件的所有不必要的方面。文件 1 和 2 可以在未来的任何项目中重复使用,并且是安全、可靠、可重复使用的代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。