Inhaltsverzeichnis
Seitenverschönerung
Verwenden Sie ttkbootstrap, um die Seite zu verschönern
Heim Backend-Entwicklung Python-Tutorial Wer hat gesagt, dass das Schreiben von GUI-Programmen in Python hässlich ist? Das liegt daran, dass Sie nicht wissen, wie man es verschönert!

Wer hat gesagt, dass das Schreiben von GUI-Programmen in Python hässlich ist? Das liegt daran, dass Sie nicht wissen, wie man es verschönert!

Apr 11, 2023 pm 01:52 PM
python gui

Wer hat gesagt, dass das Schreiben von GUI-Programmen in Python hässlich ist? Das liegt daran, dass Sie nicht wissen, wie man es verschönert!

Bei unserer täglichen Arbeit und unserem Studium schreiben wir häufig einige einfache Python-GUI-Tools, um verschiedene automatisierte Aufgaben auszuführen, z. B. die Stapelverarbeitung von Dateien, die Stapelverarbeitung von Bildern usw. Wenn wir diese Tools schreiben, konzentrieren wir uns oft nur auf die Implementierung von Funktionen und ignorieren die Verschönerung der Seite. Dies macht die in Python erstellten GUI-Programme in den Augen der Leute auch relativ niedrig Verschönerung der Seite, mal sehen, wie in reinem Python geschriebene GUI-Programme auch sehr schön sein können!

Seitenlayout

Wir vervollständigen zunächst ein grundlegendes GUI-Layout

Angenommen, wir möchten ein Hexadezimalkonvertierungstool erstellen, dann sieht das allgemeine Layout wie folgt aus:

Wer hat gesagt, dass das Schreiben von GUI-Programmen in Python hässlich ist? Das liegt daran, dass Sie nicht wissen, wie man es verschönert!

Das obige Bild stammt vollständig von Python It wird mit der integrierten GUI-Bibliothek tkinter geschrieben.

Ein Teil des Codes lautet wie folgt:

from tkinter import ttk
from tkinter import *
class Transform():
 def __init__(self):
 self.root = Tk()
 self.root.title("进制转换工具")
 self.root.geometry("600x280")
 self.root.resizable(False, False)
 self.var = StringVar()
 self.values = ['2', '8', '10', '16', '32', '36', '58', '62']
 self.myWidget()
 self.myLayout()
 def myWidget(self):
 self.container = Frame(self.root)
 # 转换设置区域
 self.lf_group1 = LabelFrame(master=self.container, text="转换设置")
 self.cb = Checkbutton(self.lf_group1, text="是否自动转换")
 self.cb.invoke()
 self.bt = Button(self.lf_group1, text='转换')
 self.en = Entry(self.lf_group1, text='warning')
 # 进制选择区域
 self.lf_group2 = LabelFrame(master=self.container, text="进制选择")
 self.lb1 = Label(self.lf_group2, text="请选择待转换的进制")
 self.cbo1 = ttk.Combobox(
 master=self.lf_group2,
 values=self.values
 )
 self.cbo1.set(self.values[2])
 self.lb2 = Label(self.lf_group2, text="请选择转换后的进制")
 self.cbo2 = ttk.Combobox(
 master=self.lf_group2,
 values=self.values,
 )
 self.cbo2.set(self.values[0])
 # 进制输出区域
 self.txt = Text(master=self.container, height=5, width=50)
 def myLayout(self):
 self.container.pack(side=LEFT, fill=BOTH, expand=YES, padx=5)
 self.lf_group1.pack(fill=X, side=TOP)
 self.lf_group2.pack(fill=X, pady=10, side=TOP)
 self.cb.pack(side=LEFT, expand=YES, padx=5, fill=X)
 self.bt.pack(side=LEFT, expand=YES, padx=5, fill=X)
 self.en.pack(side=LEFT, expand=YES, padx=5, fill=X)
 self.lb1.pack(side=LEFT, expand=YES, padx=5)
 self.cbo1.pack(side=LEFT, expand=YES, pady=5)
 self.lb2.pack(side=LEFT, expand=YES, padx=5)
 self.cbo2.pack(side=LEFT, expand=YES, pady=5)
 self.txt.pack(side=LEFT, anchor=NW, pady=5, fill=BOTH, expand=YES)
 def run(self):
 self.container.mainloop()
if __name__ == '__main__':
 trans = Transform()
 trans.run()
Nach dem Login kopieren

Der Code ist nicht kompliziert und das Layout ist auch die einfachste verwendete Packmethode. Obwohl das gesamte GUI-Programm ordentlich aussieht, sind die Farben eintönig und nicht jede Komponente sehr schön. Lass es uns als nächstes verschönern.

Seitenverschönerung

Wir verschönern zunächst die Seite, indem wir CSS manuell festlegen. Hier verwenden wir hauptsächlich das Config-Attribut der Tkonter-Bibliothek.

Zuerst legen wir die Hintergrundfarbe fest:

self.container.config(bg='#073642')
Nach dem Login kopieren

Für den gesamten Container-Container setzen wir die Hintergrundfarbe auf #073642

Dann legen wir die Stile jeder Komponente separat fest:

self.lf_group1.config(bg='#073642', fg="white")
self.lf_group2.config(bg='#073642', fg="white")
self.cb.config(bg='#073642', selectcolor='#073642', activebackground='#073642',
activeforeground='#073642', fg="white")
self.bt.config(bg="azure3")
self.en.config(highlightbackground="#0b5162", highlightcolor="#0b5162",
insertofftime=500, insertontime=500, fg="Gainsboro", insertbackground="Gainsboro",
bg="#073642", highlightthickness=2, relief="solid")
self.lb1.config(bg='#073642', activebackground='#073642',
 activeforeground='#073642', fg="white")
self.lb2.config(bg='#073642', activebackground='#073642',
 activeforeground='#073642', fg="white")
self.txt.config(insertofftime=500, insertontime=500, fg="Gainsboro", insertbackground="Gainsboro",
 wrap="none", bg='#073642')
Nach dem Login kopieren

Alle werden über die Konfiguration festgelegt. Für die Farbe kann die Auswahl über den Online-Farbwähler getroffen werden.

  • https://tools.kalvinbg.cn/dev/colorPicker Als nächstes legen wir den Dropdown-Box-Stil fest. Es gibt einige Besonderheiten an der Dropdown-Box-Komponente.

Diese Komponente gehört zur ttk-Komponente, daher muss der Stil über das Thema festgelegt werden. Der Code lautet wie folgt:

combostyle = ttk.Style()
combostyle.theme_create('combostyle', parent='alt',
 settings={'TCombobox':
 {'configure':
 {
 'foreground': 'white',
 'selectbackground': '#073642',# 选择后的背景颜色
 'fieldbackground': '#073642',# 下拉框颜色
 'background': '#073642',# 下拉按钮背景颜色
 "font": 10,# 字体大小
 }}}
 )
combostyle.theme_use('combostyle')
Nach dem Login kopieren

Auf diese Weise wird der Stil unseres gesamten GUI-Programms festgelegt Schauen Sie sich den Endeffekt an:

Wer hat gesagt, dass das Schreiben von GUI-Programmen in Python hässlich ist? Das liegt daran, dass Sie nicht wissen, wie man es verschönert!

Es ist deutlich zu erkennen, dass das Erscheinungsbild um mehrere Ebenen verbessert wurde!

Verwenden Sie ttkbootstrap, um die Seite zu verschönern

Natürlich haben wir auch eine einfachere und effektivere Verschönerungsmethode, nämlich die Verwendung der ttkbootstrap-Bibliothek zum Verschönern der Seite.

Installieren Sie zuerst die ttkbootstrap-Bibliothek über pip:

pip install ttkbootstrap
Nach dem Login kopieren

Dann verweisen Sie auf die Bibliothek im Projekt:

import ttkbootstrap as ttk
from ttkbootstrap.constants import *
class MainCreator(ttk.Window):
 def __init__(self):
 super().__init__("进制转换工具", themename="solar", resizable=(False, False))# 设置一个主题
Nach dem Login kopieren

Zu diesem Zeitpunkt, wenn wir das Layout der Komponenten abgeschlossen haben, wird der Gesamtstil der Seite zum Stil von Natürlich können wir verschiedenen Komponenten immer noch Bootstyle-Attribute hinzufügen, um weitere Stileffekte zu erzielen.

def create_frame(self):
 """Create all the frame widgets"""
 container = ttk.Frame(self)
 container.pack(side=LEFT, fill=BOTH, expand=YES, padx=5)
 color_group = ttk.Labelframe(
 master=container, text="转换设置", padding=10
 )
 color_group.pack(fill=X, side=TOP)
 self.cb = ttk.Checkbutton(color_group, text="是否自动转换", variable=self.cbvar)
 self.cb.invoke()
 self.bt = ttk.Button(color_group, text='转换', bootstyle='success')
 self.en = ttk.Entry(color_group, text='warning', bootstyle='warning')
 self.cb.pack(side=LEFT, expand=YES, padx=5, fill=X)
 self.bt.pack(side=LEFT, expand=YES, padx=5, fill=X)
 self.en.pack(side=LEFT, expand=YES, padx=5, fill=X)
 cr_group = ttk.Labelframe(
 master=container, text="进制选择", padding=10
 )
 cr_group.pack(fill=X, pady=10, side=TOP)
 values = ['2', '8', '10', '16', '32', '36', '58', '62']
 cr3 = ttk.Label(cr_group, text="请选择待转换的进制")
 cr3.pack(side=LEFT, expand=YES, padx=5)
 self.cbo1 = ttk.Combobox(
 master=cr_group,
 values=values,
 )
 self.cbo1.pack(side=LEFT, expand=YES, pady=5)
 self.cbo1.set(values[2])
 cr5 = ttk.Label(cr_group, text="请选择转换后的进制")
 cr5.pack(side=LEFT, expand=YES, padx=5)
 self.cbo2 = ttk.Combobox(
 master=cr_group,
 values=values,
 )
 self.cbo2.pack(side=LEFT, expand=YES, pady=5)
 self.cbo2.set(values[0])
 self.txt = ttk.Text(master=container, height=5, width=50, wrap="none")
 self.txt.pack(side=LEFT, anchor=NW, pady=5, fill=BOTH, expand=YES)
Nach dem Login kopieren

Der Endeffekt ist wie folgt:

Wer hat gesagt, dass das Schreiben von GUI-Programmen in Python hässlich ist? Das liegt daran, dass Sie nicht wissen, wie man es verschönert!

Es ist ersichtlich, dass der Gesamteffekt der Verwendung dieser Bibliothek immer noch schöner und bequemer ist als das manuelle Hinzufügen von CSS-Stilen!

Okay, das ist alles, was ich heute geteilt habe, bis zum nächsten Mal~

Das obige ist der detaillierte Inhalt vonWer hat gesagt, dass das Schreiben von GUI-Programmen in Python hässlich ist? Das liegt daran, dass Sie nicht wissen, wie man es verschönert!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was sind die Vor- und Nachteile des Templatings? Was sind die Vor- und Nachteile des Templatings? May 08, 2024 pm 03:51 PM

Was sind die Vor- und Nachteile des Templatings?

So laden Sie Deepseek Xiaomi herunter So laden Sie Deepseek Xiaomi herunter Feb 19, 2025 pm 05:27 PM

So laden Sie Deepseek Xiaomi herunter

Google AI kündigt Gemini 1.5 Pro und Gemma 2 für Entwickler an Google AI kündigt Gemini 1.5 Pro und Gemma 2 für Entwickler an Jul 01, 2024 am 07:22 AM

Google AI kündigt Gemini 1.5 Pro und Gemma 2 für Entwickler an

Für nur 250 US-Dollar zeigt Ihnen der technische Leiter von Hugging Face Schritt für Schritt, wie Sie Llama 3 verfeinern Für nur 250 US-Dollar zeigt Ihnen der technische Leiter von Hugging Face Schritt für Schritt, wie Sie Llama 3 verfeinern May 06, 2024 pm 03:52 PM

Für nur 250 US-Dollar zeigt Ihnen der technische Leiter von Hugging Face Schritt für Schritt, wie Sie Llama 3 verfeinern

Teilen Sie mehrere .NET-Open-Source-KI- und LLM-bezogene Projekt-Frameworks Teilen Sie mehrere .NET-Open-Source-KI- und LLM-bezogene Projekt-Frameworks May 06, 2024 pm 04:43 PM

Teilen Sie mehrere .NET-Open-Source-KI- und LLM-bezogene Projekt-Frameworks

Eine vollständige Anleitung zum Debuggen und Analysieren von Golang-Funktionen Eine vollständige Anleitung zum Debuggen und Analysieren von Golang-Funktionen May 06, 2024 pm 02:00 PM

Eine vollständige Anleitung zum Debuggen und Analysieren von Golang-Funktionen

Wie fragst du ihn Deepseek? Wie fragst du ihn Deepseek? Feb 19, 2025 pm 04:42 PM

Wie fragst du ihn Deepseek?

So speichern Sie die Evaluierungsfunktion So speichern Sie die Evaluierungsfunktion May 07, 2024 am 01:09 AM

So speichern Sie die Evaluierungsfunktion

See all articles