Python GUI Development 打造与众不同的桌面应用程序
更新时间:2023-07-09Python GUI Development 介绍
Python GUI开发是Python编程语言在GUI开发方面的应用。在GUI开发方面,Python的tkinter模块是十分优秀且易于使用的。除此之外,Python还有许多优秀的GUI库,例如PyQt、PySide、wxPython、Kivy等。 本文将以使用tkinter来打造一个简单的计算器应用程序来展示Python GUI开发的过程。
import tkinter as tk
class Calculator:
def __init__(self, master):
self.master = master
self.master.title("Calculator")
self.screen = tk.Entry(self.master, width=25, font=('Arial', 16))
self.screen.grid(row=0, column=0, columnspan=4, pady=5)
btn_list = [
'7', '8', '9', '/',
'4', '5', '6', '*',
'1', '2', '3', '-',
'0', '.', 'C', '+',
]
row = 1
col = 0
for btn in btn_list:
command = lambda x=btn: self.click(x)
tk.Button(self.master, text=btn, width=5, height=2, command=command).grid(row=row, column=col)
col += 1
if col > 3:
row += 1
col = 0
equal = tk.Button(self.master, text='=', width=11, height=2, command=self.result)
equal.grid(row=5, column=0, columnspan=2)
clear = tk.Button(self.master, text='Clear', width=11, height=2, command=self.clear)
clear.grid(row=5, column=2, columnspan=2)
def click(self, key):
if key == 'C':
self.screen.delete(0, tk.END)
elif key == '=':
self.result()
else:
self.screen.insert(tk.END, key)
def clear(self):
self.screen.delete(0, tk.END)
def result(self):
try:
result = str(eval(self.screen.get()))
except:
result = 'Error'
self.screen.delete(0, tk.END)
self.screen.insert(tk.END, result)
if __name__ == '__main__':
root = tk.Tk()
app = Calculator(root)
root.mainloop()
设计GUI界面
在设计一个GUI应用程序时,往往需要考虑到用户体验和易用性。在Python的GUI开发中,常用的模块是tkinter,其提供了丰富的工具箱,可以方便的完成GUI界面的设计。 下面是一个基于tkinter的GUI界面代码示例:
import tkinter as tk
class Application(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.create_widgets()
def create_widgets(self):
self.hi_there = tk.Button(self)
self.hi_there["text"] = "Hello World\n(click me)"
self.hi_there["command"] = self.say_hi
self.hi_there.pack(side="top")
self.quit = tk.Button(self, text="QUIT", fg="red",
command=self.master.destroy)
self.quit.pack(side="bottom")
def say_hi(self):
print("hi there, everyone!")
if __name__ == '__main__':
root = tk.Tk()
app = Application(master=root)
app.mainloop()
使用PyQt构建GUI程序
PyQt是一个开源的Python GUI框架,它结合了Python的简洁、易学、易用的特点以及Qt强大的GUI设计能力,是开发桌面应用程序的重要工具。 下面是一个基于PyQt5的GUI应用程序的代码示例:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
btn = QPushButton('Hello', self)
btn.clicked.connect(self.say_hello)
btn.resize(btn.sizeHint())
btn.move(50, 50)
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Hello World')
self.show()
def say_hello(self):
print('Hello World!')
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
使用Kivy构建GUI程序
Kivy是一个用于构建跨平台及其美观的应用程序集的开源的Python库。Kivy 提供了基于 Python 的自然语法,支持触摸或鼠标等各种输入方式,支持各种窗口管理功能和基本的动画/转换效果。下面是一个基于Kivy的GUI程序代码示例:
from kivy.app import App
from kivy.uix.button import Button
class Calculator(App):
def build(self):
button = Button(text='Hello World',
size_hint=(.5, .5),
pos_hint={'center_x': .5, 'center_y': .5})
button.bind(on_press=self.say_hello)
return button
def say_hello(self, *args):
print('Hello World!')
if __name__ == '__main__':
Calculator().run()