


Bagaimana untuk melaksanakan penukaran Bingkai dalam pengaturcaraan GUI Python Tkinter
1. Pengenalan kepada kaedah tkraise() Frame
Biasanya, aplikasi Tkinter terdiri daripada berbilang Bingkai. Dan anda sering perlu bertukar antara Bingkai untuk memaparkan Bingkai yang berkaitan dengan pilihan pengguna.
Tkinter membenarkan menyusun Bingkai di atas satu sama lain. Untuk memaparkan Bingkai tertentu, hanya letakkan satu di atas satu lagi dalam susunan susunan. Bingkai atas akan kelihatan.
Untuk meletakkan Bingkai di atas, anda boleh menggunakan kaedah tkraise() widget Bingkai, seperti yang ditunjukkan di bawah:
frame.tkraise()
2 contoh penggunaan tkraise
Yang berikut akan melaksanakan satu aplikasi kecil penukaran Suhu menggunakan dua Bingkai berbeza untuk suhu Fahrenheit dan Celsius Tetingkap UI terdiri seperti berikut:
ConverterFrame akan mempunyai dua kejadian, satu untuk menukarkan. suhu daripada Fahrenheit kepada Fahrenheit Tukar suhu kepada Celsius dan satu lagi untuk menukar suhu daripada Celsius kepada Fahrenheit:
Dalam langkah pertama, tentukan kelas TemperatureConverter dengan dua kaedah statik: fahrenheit_to_celsius dan celsius_to_fahrenheit.
class TemperatureConverter: @staticmethod def fahrenheit_to_celsius(f, format=True): result = (f - 32) * 5/9 if format: return f'{f} Fahrenheit = {result:.2f} Celsius' return result @staticmethod def celsius_to_fahrenheit(c, format=True): result = c * 9/5 + 32 if format: return f'{c} Celsius = {result:.2f} Fahrenheit' return result
Kaedah fahrenheit_to_celsius dan celsius_to_fahrenheit akan mengembalikan rentetan berformat jika argumen kedua ditinggalkan atau Benar diserahkan kepada mereka. Jika tidak, mereka mengembalikan hasilnya sebagai nombor.
Langkah kedua, tentukan ConverterFrame yang akan memaparkan UI untuk menukar suhu daripada Fahrenheit kepada Celsius dan sebaliknya.
Untuk melakukan ini, jadikan ConverterFrame lebih fleksibel dengan menambahkan parameter berikut pada kaedah __init__()
:
String yang akan dipaparkan sebagai Fahrenheit dan Celsius
Fungsi panggil balik digunakan untuk menukar suhu.
class ConverterFrame(ttk.Frame): def __init__(self, container, unit_from, converter): super().__init__(container) self.unit_from = unit_from self.converter = converter # field options options = {'padx': 5, 'pady': 0} # temperature label self.temperature_label = ttk.Label(self, text=self.unit_from) self.temperature_label.grid(column=0, row=0, sticky='w', **options) # temperature entry self.temperature = tk.StringVar() self.temperature_entry = ttk.Entry(self, textvariable=self.temperature) self.temperature_entry.grid(column=1, row=0, sticky='w', **options) self.temperature_entry.focus() # button self.convert_button = ttk.Button(self, text='Convert') self.convert_button.grid(column=2, row=0, sticky='w', **options) self.convert_button.configure(command=self.convert) # result label self.result_label = ttk.Label(self) self.result_label.grid(row=1, columnspan=3, **options) # add padding to the frame and show it self.grid(column=0, row=0, padx=5, pady=5, sticky="nsew") def convert(self, event=None): """ Handle button click event """ try: input_value = float(self.temperature.get()) result = self.converter(input_value) self.result_label.config(text=result) except ValueError as error: showerror(title='Error', message=error) def reset(self): self.temperature_entry.delete(0, "end") self.result_label.text = ''
Bagaimana kod di atas berfungsi?
1) Gunakan parameter unit_from untuk memaparkan label suhu.
2) Panggil panggilan balik self.convert dalam kaedah convert() untuk menukar suhu daripada satu unit kepada unit yang lain.
3) Tentukan kaedah tetapan semula() untuk mengosongkan widget masukan dan label hasil apabila Bingkai bertukar dari satu kepada yang lain.
Ketiga, tentukan kelas ControlFrame yang memaparkan butang radio untuk memilih Bingkai yang hendak dipaparkan. Kelas ControFrame mewarisi daripada ttk.LabelFrame.
class ControlFrame(ttk.LabelFrame): def __init__(self, container): super().__init__(container) self['text'] = 'Options' # radio buttons self.selected_value = tk.IntVar() ttk.Radiobutton( self, text='F to C', value=0, variable=self.selected_value, command=self.change_frame).grid(column=0, row=0, padx=5, pady=5) ttk.Radiobutton( self, text='C to F', value=1, variable=self.selected_value, command=self.change_frame).grid(column=1, row=0, padx=5, pady=5) self.grid(column=0, row=1, padx=5, pady=5, sticky='ew') # initialize frames self.frames = {} self.frames[0] = ConverterFrame( container, 'Fahrenheit', TemperatureConverter.fahrenheit_to_celsius) self.frames[1] = ConverterFrame( container, 'Celsius', TemperatureConverter.celsius_to_fahrenheit) self.change_frame() def change_frame(self): frame = self.frames[self.selected_value.get()] frame.reset() frame.tkraise()
Bagaimana kod di atas berfungsi?
Setiap butang radio mempunyai nilai 0 atau 1.
Buat dua tika kelas ConverterFrame, satu bertanggungjawab untuk menukar suhu daripada Fahrenheit kepada Celsius dan satu lagi bertanggungjawab untuk menukar suhu daripada Celsius kepada Fahrenheit. Selain itu, tentukan kamus untuk menyimpan Bingkai ini. Kekunci Bingkai adalah sama dengan nilai butang radio.
Apabila butang radio diklik, kaedah change_frame() dipanggil untuk memilih Bingkai yang sepadan daripada kamus berdasarkan nilai butang yang dipilih.
Kaedah tetapan semula() Panggil Frame untuk menetapkan semula medan input dan label hasil. Dan juga memanggil kaedah tkraise() untuk memaparkan Bingkai.
Keempat, tentukan kelas Apl yang diwarisi daripada kelas tk.Tk:
class App(tk.Tk): def __init__(self): super().__init__() self.title('Temperature Converter') self.geometry('300x120') self.resizable(False, False)
Akhir sekali, mulakan program
if __name__ == "__main__": app = App() ControlFrame(app) app.mainloop()
Kod disepadukan sebagai berikut:
import tkinter as tk from tkinter import ttk from tkinter.messagebox import showerror class TemperatureConverter: @staticmethod def fahrenheit_to_celsius(f, format=True): result = (f - 32) * 5/9 if format: return f'{f} Fahrenheit = {result:.2f} Celsius' return result @staticmethod def celsius_to_fahrenheit(c, format=True): result = c * 9/5 + 32 if format: return f'{c} Celsius = {result:.2f} Fahrenheit' return result class ConverterFrame(ttk.Frame): def __init__(self, container, unit_from, converter): super().__init__(container) self.unit_from = unit_from self.converter = converter # field options options = {'padx': 5, 'pady': 0} # temperature label self.temperature_label = ttk.Label(self, text=self.unit_from) self.temperature_label.grid(column=0, row=0, sticky='w', **options) # temperature entry self.temperature = tk.StringVar() self.temperature_entry = ttk.Entry(self, textvariable=self.temperature) self.temperature_entry.grid(column=1, row=0, sticky='w', **options) self.temperature_entry.focus() # button self.convert_button = ttk.Button(self, text='Convert') self.convert_button.grid(column=2, row=0, sticky='w', **options) self.convert_button.configure(command=self.convert) # result label self.result_label = ttk.Label(self) self.result_label.grid(row=1, columnspan=3, **options) # add padding to the frame and show it self.grid(column=0, row=0, padx=5, pady=5, sticky="nsew") def convert(self, event=None): """ Handle button click event """ try: input_value = float(self.temperature.get()) result = self.converter(input_value) self.result_label.config(text=result) except ValueError as error: showerror(title='Error', message=error) def reset(self): self.temperature_entry.delete(0, "end") self.result_label.text = '' class ControlFrame(ttk.LabelFrame): def __init__(self, container): super().__init__(container) self['text'] = 'Options' # radio buttons self.selected_value = tk.IntVar() ttk.Radiobutton( self, text='F to C', value=0, variable=self.selected_value, command=self.change_frame).grid(column=0, row=0, padx=5, pady=5) ttk.Radiobutton( self, text='C to F', value=1, variable=self.selected_value, command=self.change_frame).grid(column=1, row=0, padx=5, pady=5) self.grid(column=0, row=1, padx=5, pady=5, sticky='ew') # initialize frames self.frames = {} self.frames[0] = ConverterFrame( container, 'Fahrenheit', TemperatureConverter.fahrenheit_to_celsius) self.frames[1] = ConverterFrame( container, 'Celsius', TemperatureConverter.celsius_to_fahrenheit) self.change_frame() def change_frame(self): frame = self.frames[self.selected_value.get()] frame.reset() frame.tkraise() class App(tk.Tk): def __init__(self): super().__init__() self.title('Temperature Converter') self.geometry('480x240') self.resizable(False, False) if __name__ == "__main__": app = App() ControlFrame(app) app.mainloop()
Keputusan larian adalah seperti berikut:
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan penukaran Bingkai dalam pengaturcaraan GUI Python Tkinter. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Untuk mewujudkan persekitaran maya Python, anda boleh menggunakan modul VENV. Langkah-langkahnya adalah: 1. Masukkan direktori projek untuk melaksanakan persekitaran python-mvenvenv untuk mewujudkan persekitaran; 2. Gunakan Sourceenv/Bin/Aktifkan ke Mac/Linux dan Env \ Scripts \ Aktifkan ke Windows; 3. Gunakan Pakej Pemasangan Pipinstall, PipFreeze> Keperluan.txt untuk mengeksport kebergantungan; 4. Berhati -hati untuk mengelakkan menyerahkan persekitaran maya ke Git, dan mengesahkan bahawa ia berada dalam persekitaran yang betul semasa pemasangan. Persekitaran maya boleh mengasingkan kebergantungan projek untuk mencegah konflik, terutamanya sesuai untuk pembangunan pelbagai projek, dan editor seperti pycharm atau vscode juga

Usetracemalloctotrackmemoryallocationsandidentifyhigh-memorylines;2.Monitorobjectcountswithgcandobjgraphtodetectgrowingobjecttypes;3.Inspectreferencecyclesandlong-livedreferencesusingobjgraph.show_backrefsandcheckforuncollectedcycles;4.Usememory_prof

UseZoneInfoforpython3.9 tOcreatetimezone-awaredateTimesandConvertBetweentimeZoneswitheStimeZone ();

Kaedah mengisi data Excel ke dalam bentuk web menggunakan Python adalah: pertama menggunakan panda untuk membaca data Excel, dan kemudian gunakan selenium untuk mengawal penyemak imbas untuk mengisi secara automatik dan menyerahkan borang; Langkah -langkah khusus termasuk memasang pandas, openpyxl dan perpustakaan selenium, memuat turun pemacu penyemak imbas yang sepadan, menggunakan pandas untuk membaca nama, e -mel, telefon dan medan lain dalam fail data.xlsx, melancarkan pelayar melalui selenium untuk membuka. Bentuk dan proses semua baris data dalam gelung.

Untuk menyusun nilai kamus, gunakan fungsi yang disusun () untuk memadankan dict.items () dan parameter utama; 1. Gunakan lambdaitem: item [1] untuk disusun mengikut urutan menaik; 2. Tambah terbalik = benar untuk melaksanakan perintah menurun; 3. Gunakan operator.itemgetter (1) untuk menggantikan lambda untuk meningkatkan kebolehbacaan dan prestasi; Kamus mengekalkan perintah penyisipan di Python 3.7, kamus asal tetap tidak berubah, dan mengembalikan kamus baru. Jika jenis nilai bercampur, pemprosesan tambahan diperlukan, dan corak akhir adalah dict (disusun (d.items (), kunci = lambdax: x [1])).

Buat persekitaran maya: Jalankan python-mvenvvenv dalam folder projek. 2. Aktifkan persekitaran maya: Windows menggunakan Venv \ Scripts \ Activate, macOS/linux menggunakan sourcevenv/bin/aktif. 3. Buka projek di VSCode dan tekan CTRL Shift P untuk memilih penterjemah Python, tentukan penterjemah dalam persekitaran maya. 4. Sahkan sama ada ia berkesan: Jalankan importsys; cetak (sys.mecutable), dan laluan output harus menunjuk ke folder VENV. 5. Konfigurasi Pilihan: Dayakan python.terminal.a dalam tetapan

Untuk mencantikkan dan mencetak fail JSON, anda perlu menggunakan parameter indent modul JSON. Langkah -langkah khusus ialah: 1. Gunakan json.load () untuk membaca data fail JSON; 2. Gunakan json.dump () dan tetapkan indent kepada 4 atau 2 untuk menulis ke fail baru, dan kemudian fail JSON yang diformat boleh dihasilkan dan percetakan yang dihiasi dapat diselesaikan.

Define__iter __ () toreturntheiteratorObject, biasanya selforaseparateiteratorinstance.2.define__next __ () toreturnthenextvalueanddraisestopiterationWhenexhausted.tocreateareusablecustomiterator, urusan
