Jadual Kandungan
1. Pengenalan kepada kaedah tkraise() Frame
2 contoh penggunaan tkraise
Rumah pembangunan bahagian belakang Tutorial Python Bagaimana untuk melaksanakan penukaran Bingkai dalam pengaturcaraan GUI Python Tkinter

Bagaimana untuk melaksanakan penukaran Bingkai dalam pengaturcaraan GUI Python Tkinter

May 11, 2023 pm 04:25 PM
python gui 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:

Bagaimana untuk melaksanakan penukaran Bingkai dalam pengaturcaraan GUI Python Tkinter

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:

Bagaimana untuk melaksanakan penukaran Bingkai dalam pengaturcaraan GUI Python Tkinter

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:

Bagaimana untuk melaksanakan penukaran Bingkai dalam pengaturcaraan GUI Python Tkinter

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Artikel Panas

Skop pembolehubah PHP dijelaskan
1 bulan yang lalu By 百草
Mengulas kod dalam php
4 minggu yang lalu By 百草
Petua untuk menulis komen php
4 minggu yang lalu By 百草

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1510
276
Cara mewujudkan persekitaran maya di python Cara mewujudkan persekitaran maya di python Aug 05, 2025 pm 01:05 PM

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

Apakah strategi umum untuk menyahpepijat kebocoran memori di Python? Apakah strategi umum untuk menyahpepijat kebocoran memori di Python? Aug 06, 2025 pm 01:43 PM

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

Bagaimana untuk bekerja dengan zon waktu di Python? Bagaimana untuk bekerja dengan zon waktu di Python? Aug 05, 2025 pm 04:53 PM

UseZoneInfoforpython3.9 tOcreatetimezone-awaredateTimesandConvertBetweentimeZoneswitheStimeZone ();

Bagaimana untuk mengautomasikan kemasukan data dari Excel ke borang web dengan Python? Bagaimana untuk mengautomasikan kemasukan data dari Excel ke borang web dengan Python? Aug 12, 2025 am 02:39 AM

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.

Bagaimana untuk menyusun kamus python dengan nilai -nilainya? Bagaimana untuk menyusun kamus python dengan nilai -nilainya? Aug 05, 2025 am 03:32 AM

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])).

Cara Menyiapkan Persekitaran Maya Python Di VSCode Cara Menyiapkan Persekitaran Maya Python Di VSCode Aug 06, 2025 am 02:30 AM

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

Bagaimana cara mencetak fail JSON di Python? Bagaimana cara mencetak fail JSON di Python? Aug 07, 2025 pm 12:10 PM

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.

Bagaimana untuk melaksanakan Iterator tersuai dalam kelas Python? Bagaimana untuk melaksanakan Iterator tersuai dalam kelas Python? Aug 06, 2025 pm 01:17 PM

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

See all articles