Ubah ukuran jendela GUI tkinter

Saya sudah mencoba mengubah ukuran jendela untuk GUI ini tetapi saya kesulitan. Saya mencoba menggunakan root.geometry("1080x800+200+200") tetapi sepertinya tidak berhasil juga. Adakah yang bisa menjelaskan alasannya? saat ini saya hanya berlatih menggunakan tkinter. terima kasih

import tkinter as tk   # python3
TITLE_FONT = ("Helvetica", 18, "bold")

class SampleApp(tk.Tk):

    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)

        # the container is where we'll stack a bunch of frames
        # on top of each other, then the one we want visible
        # will be raised above the others
        container = tk.Frame(self)
        container.pack(side="top", fill="both", expand=True)
        container.grid_rowconfigure(0, weight=1)
        container.grid_columnconfigure(0, weight=1)

        self.frames = {}
        for F in (StartPage, PageOne, PageTwo):
            page_name = F.__name__
            frame = F(parent=container, controller=self)
            self.frames[page_name] = frame

            # put all of the pages in the same location;
            # the one on the top of the stacking order
            # will be the one that is visible.
            frame.grid(row=0, column=0, sticky="nsew")

        self.show_frame("StartPage")

    def show_frame(self, page_name):
        '''Show a frame for the given page name'''
        frame = self.frames[page_name]
        frame.tkraise()


class StartPage(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller = controller
        label = tk.Label(self, text="This is the start page", font=TITLE_FONT)
        label.pack(side="top", fill="x", pady=10)

        button1 = tk.Button(self, text="Go to Page One",
                            command=lambda: controller.show_frame("PageOne"))
        button2 = tk.Button(self, text="Go to Page Two",
                            command=lambda: controller.show_frame("PageTwo"))
        button1.pack()
        button2.pack()


class PageOne(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller = controller
        label = tk.Label(self, text="This is page 1", font=TITLE_FONT)
        label.pack(side="top", fill="x", pady=10)
        button = tk.Button(self, text="Go to the start page",
                           command=lambda: controller.show_frame("StartPage"))
        button.pack()


class PageTwo(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller = controller
        label = tk.Label(self, text="This is page 2", font=TITLE_FONT)
        label.pack(side="top", fill="x", pady=10)
        button = tk.Button(self, text="Go to the start page",
                           command=lambda: controller.show_frame("StartPage"))
        button.pack()


if __name__ == "__main__":
    app = SampleApp()
    app.mainloop()

person saalahdin    schedule 21.02.2017    source sumber
comment
apa yang Anda maksud dengan root.geometry tidak berfungsi dengan baik?   -  person WhatsThePoint    schedule 21.02.2017
comment
saya mencoba menggunakan root.geometry tetapi tidak membuat jendela lebih besar, itu hanya membuat jendela baru dengan ukuran yang saya inginkan.   -  person saalahdin    schedule 21.02.2017
comment
root.geometry mengubah ukuran jendela tkinter. maksud Anda konsol python tidak berubah?   -  person WhatsThePoint    schedule 21.02.2017
comment
Tidak ada jendela bernama root dalam kode yang Anda posting. Jendela root Anda bernama app. Jadi, Anda harus menelepon app.geometry("1080x800+200+200"). BTW, Anda harus memperbaiki lekukan Anda.   -  person PM 2Ring    schedule 21.02.2017
comment
ah ya @ PM2Ring saya tidak mengerti karena saya berkomentar begitu saya melihat bahwa root,geometry tidak berfungsi dengan baik saya tidak melihat kodenya :D   -  person WhatsThePoint    schedule 21.02.2017
comment
berdasarkan ukuran windows saya sedang berbicara tentang GUI itu sendiri   -  person saalahdin    schedule 21.02.2017
comment
Tidak ada panggilan ke geometry dalam kode Anda, dan tidak ada widget bernama root.   -  person Bryan Oakley    schedule 21.02.2017
comment
sudahlah aku memperbaikinya. saya sangat bodoh, saya menggunakan root.geometry dari program lain :) if __name__ == "__main__": app = SampleApp() app.geometry("1080x800+200+200") app.mainloop()   -  person saalahdin    schedule 21.02.2017


Jawaban (2)


Anda belum mendeklarasikan root pada program Anda sehingga Anda tidak akan dapat memanggil root.geometry. Jika Anda mengubah kode Anda menjadi seperti ini maka Anda akan dapat memanggil root.geometry dan mengubah ukuran jendela GUI Anda, juga dengan menggunakan root Anda dapat meneruskannya sebagai parameter ke kelas halaman Anda yang lain dan mengatur ukuran yang berbeda untuk semuanya jika Anda ingin.

if __name__ == "__main__":
    root = tk.Tk()
    root.geometry("1080x800+200+200") 
    app = SampleApp(root)
    root.mainloop()
person WhatsThePoint    schedule 21.02.2017
comment
Aku sangat bodoh, aku menggunakannya dari program lain :) Ini berfungsi sekarang tetapi alih-alih melakukan apa yang kamu lakukan, aku malah melakukannya if __name__ == "__main__": app = SampleApp() app.geometry("1080x800+200+200") app.mainloop() - person saalahdin; 21.02.2017
comment
Dalam contoh ini Anda tidak ingin membuat root. SampleApp subkelas Tk, jadi Anda hanya perlu memanggil geometry di app. - person Bryan Oakley; 21.02.2017

Di SampleApp kelas satu Anda cukup menggunakan self.geometry('500x555') #for example.

person kresho111    schedule 22.03.2017