Python 如何将基于文本的程序制作成GUI?特金特是关键吗?

Python 如何将基于文本的程序制作成GUI?特金特是关键吗?,python,tkinter,Python,Tkinter,我即将完成我的第一个Python项目。它是一个基于文本的程序,用于转换公制和标准单位。我可以用什么把程序变成GUI程序。我已经调查过特金特了。然而,我不确定这是否是解决我这种情况的最好办法。我希望您能给我一些指导,因为我对编程非常陌生。Tkinker是一种简单易行的方法,可以将GUI添加到您的程序中,您实际上可以创建一些好看的界面,因此如果我是您,我会使用Tkinter。如果您在函数中有代码可以获得值并返回结果,而不必使用input()和打印() 因为您可以使用input() 或者在命令行scr

我即将完成我的第一个Python项目。它是一个基于文本的程序,用于转换公制和标准单位。我可以用什么把程序变成GUI程序。我已经调查过特金特了。然而,我不确定这是否是解决我这种情况的最好办法。我希望您能给我一些指导,因为我对编程非常陌生。

Tkinker是一种简单易行的方法,可以将GUI添加到您的程序中,您实际上可以创建一些好看的界面,因此如果我是您,我会使用Tkinter。

如果您在函数中有代码可以获得值并返回结果,而不必使用
input()
打印()

因为您可以使用
input()

或者在命令行
script.py参数中使用参数

value = sys.argv[1]

value = int(value)
result = inch_to_cm(value)
print(result)
或者您可以轻松地导入到任何GUI(
Tkinter
PyQT
PyGTK
Kivy
等)

只有在直接执行某些代码时,而不是在将其导入其他程序时,才需要
如果_uname_=='\u_umain__;'
来运行这些代码


如果函数中没有代码,但可以将其作为
script.py参数运行
,则可以使用来运行它并获得结果

 result = subprocess.check_output(['python', 'script.py', value])
通过这种方式,您可以在几乎相同的GUI上使用不同的程序



若您使用标准模块在命令行中获取参数,那个么就有模块来生成GUI-



如果您的代码使用
input()
来获取数据,那么它可能会造成更大的问题,您可能需要使用
子流程中的其他函数将文本发送到
input()
ot,它可能需要与这种类型的程序一起工作。

所有GUI的工作方式都不同于正常的控制台程序。如果将其用作
script.py参数
,则可以使用GUI中的
按钮
子流程一起运行它
,并获得结果并显示在
标签
中。但是如果使用
input()
,则必须重写所有代码并使用GUI小部件。最好将代码保留在只获取值的函数中(不使用
input()
),因为这样您就可以导入代码并在不使用
子流程的情况下使用它。您只需要一个包含两个输入字段(公制\标准)和一个转换按钮的表单。
tkinter
可以用来做您想做的事情,但是它的文档非常缺乏—尽管有很多第三方教程介绍它。
value = sys.argv[1]

value = int(value)
result = inch_to_cm(value)
print(result)
import tkinter as tk
import script  # <-- import your function

def convert():
    value = inch_entry.get()
    value = int(value)
    result = script.inch_to_cm(value)  # <-- use your function
    cm_result['text'] = result
    
root = tk.Tk()

inch_label = tk.Label(root, text='inch:')
inch_label.grid(row=0, column=0)
                 
inch_entry = tk.Entry(root)
inch_entry.grid(row=0, column=1)

cm_label = tk.Label(root, text='cm:')
cm_label.grid(row=1, column=0)
                 
cm_result = tk.Label(root)
cm_result.grid(row=1, column=1)

button = tk.Button(root, text='Convert', command=convert)
button.grid(row=2, column=0, columnspan=2)

root.mainloop()  # it starts program
import sys

def inch_to_cm(value):
     return value * 2.54
    
if __name__ == '__main__':
    if len(sys.argv) > 1:
        value = sys.argv[1]
    else:
        value = input('inch: ')

    value = int(value)
    result = inch_to_cm(value)
    print(result)
     
 result = subprocess.check_output(['python', 'script.py', value])
import tkinter as tk
import subprocess

def convert():
    value = inch_entry.get()
    result = subprocess.check_output(['python', 'script.py', value])
    cm_result['text'] = result.strip()
    
root = tk.Tk()

inch_label = tk.Label(root, text='inch:')
inch_label.grid(row=0, column=0)
                 
inch_entry = tk.Entry(root)
inch_entry.grid(row=0, column=1)

cm_label = tk.Label(root, text='cm:')
cm_label.grid(row=1, column=0)
                 
cm_result = tk.Label(root)
cm_result.grid(row=1, column=1)

button = tk.Button(root, text='Convert', command=convert)
button.grid(row=2, column=0, columnspan=2)

root.mainloop()  # it starts program and display window