c语言编程笔录

首页 >   > 笔记大全

笔记大全

Python GUI Development 打造与众不同的桌面应用程序

更新时间:2023-07-09

Python 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()