Python 3.x 在python中更改和显示新窗口的这种方法有问题吗

Python 3.x 在python中更改和显示新窗口的这种方法有问题吗,python-3.x,tkinter,Python 3.x,Tkinter,我在python中使用类时遇到了很大的困难。我在更改和显示新窗口时使用的第一个代码可以工作,但是太混乱了,所以我决定使用这个类。但我的代码可能有问题。你至少能处理一下吗?非常感谢。希望得到快速响应 import random, sys, os, rabinMiller, cryptomath from tkinter import * import tkinter as tk from PIL import Image, ImageTk from tkinter.filedialog impor

我在python中使用类时遇到了很大的困难。我在更改和显示新窗口时使用的第一个代码可以工作,但是太混乱了,所以我决定使用这个类。但我的代码可能有问题。你至少能处理一下吗?非常感谢。希望得到快速响应

import random, sys, os, rabinMiller, cryptomath
from tkinter import *
import tkinter as tk
from PIL import Image, ImageTk
from tkinter.filedialog import askopenfile

class MainFrame(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)
        container = tk.Frame(self)
        #frame1.title("RSA Cryptosystem")
        #frame1.config(bg="black")
        container.columnconfigure(0, weight=1)
        container.rowconfigure(0, weight=1)

        self.frames = {}

        for F in (StartPage, DecryptionPage, EncryptionPage, MakeKeyPage):
            frame = F(container, self)
            self.frames[F] = frame
            frame.grid(row=0, column=0, sticky=(N, W, E, S))
        self.show_frame(StartPage)

    def show_frame(self, cont):
        frame = self.frames[cont]
        frame.tkraise()

class StartPage(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self,parent)
        image4 = Image.open("rsa cryptosystem logo.jpg")
        photo4 = ImageTk.PhotoImage(image4)
        label1 = tk.Label(self, image=photo4)
        label1.grid(column=1, row=1, columnspan=3, padx=5, pady=5)
        label1.image = photo4
        image1 = Image.open("MAKE KEY.jpg")
        photo1 = ImageTk.PhotoImage(image1)
        image2 = Image.open("encryption button.jpg")
        photo2 = ImageTk.PhotoImage(image2)
        image3 = Image.open("decryption button.jpg")
        photo3 = ImageTk.PhotoImage(image3)

        button1 = tk.Button(self, compound=TOP, command=lambda: controller.show_frame(MakeKeyPage), width=338, height=338, image=photo1)
        button1.grid(column=1, row=2, sticky=S, rowspan=2, padx=5, pady=5)
        button1.image = photo1
        button2 = tk.Button(self, compound=TOP, command=lambda: controller.show_frame(EncryptionPage), width=525, height=150, image=photo2)
        button2.grid(column=2, row=2, sticky=(W, E), columnspan=2, padx=5, pady=5)
        button2.image = photo2
        button3 = tk.Button(self, compound=TOP, command=lambda: controller.show_frame(DecryptionPage), width=525, height=150, image=photo3)
        button3.grid(column=2, row=3, sticky=(W, E), columnspan=2, padx=5, pady=5)
        button3.image = photo3

class DecryptionPage(tk.Frame):

    def __init__(self, parent, controller):
        textframe1 = tk.Text(self, width=70, height=32).grid(column=3, row=2, rowspan=3, padx=5, pady=5, sticky=(S, E))
        image5 = Image.open("INSERT PRIVATE KEY.jpg")
        photo5 = ImageTk.PhotoImage(image5)
        image6 = Image.open("INSERT ENCRYPTED TEXT.jpg")
        photo6 = ImageTk.PhotoImage(image6)
        image7 = Image.open("DECRYPT.jpg")
        photo7 = ImageTk.PhotoImage(image7)

        button4 = tk.Button(self, width=338, height=80, image=photo5, command=open_file)
        button4.grid(column=1, row=2,columnspan=2, sticky=N)
        button4.image = photo5
        button5 = tk.Button(self, width=338, height=80, image=photo6, command=open_file)
        button5.grid(column=1, row=3, columnspan=2, sticky=N)
        button5.image = photo6
        button6 = tk.Button(self, text="BACK", command=lambda: controller.show_frame(StartPage))
        button6.grid(column=1, row=1, padx=5, pady=5, sticky=W)
        button7 = tk.Button(self, width=338, height=338, image=photo7)
        button7.grid(column=1, row=4, padx=5, pady=5, columnspan=2, sticky=S)
        button7.image = photo7

class EncryptionPage(tk.Frame):

    def __init__(self, parent, controller):
        textframe2 = tk.Text(self, width=70, height=32).grid(column=3, row=2, columnspan=2, rowspan=3, padx=5, pady=5, sticky=(S, E))
        image8 = Image.open("INSERT PUBLIC KEY.jpg")
        photo8 = ImageTk.PhotoImage(image8)
        image9 = Image.open("ENCRYPT.jpg")
        photo9 = ImageTk.PhotoImage(image9)

        button8 = tk.Button(self, width=338, height=80, image=photo8, command=open_file)
        button8.grid(column=1, row=2,columnspan=2, sticky=N)
        button8.image = photo8
        button10 = tk.Button(self, text="BACK", command=lambda: controller.show_frame(StartPage))
        button10.grid(column=1, row=1, padx=5, pady=5, sticky=W)
        button9 = tk.Button(self, width=338, height=338, image=photo9)
        button9.grid(column=1, row=4, padx=5, pady=5, columnspan=2, sticky=S)
        button9.image = photo9

        receivename = StringVar()
        receivename_entry = tk.Entry(self, width=85, textvariable=receivename).grid(column=4, row=1, padx=5, pady=5, sticky=(W, E))
        label4 = tk.Label(self, text="TO: ").grid(column=3, row=1, padx=5, pady=5, sticky=W)


class MakeKeyPage(tk.Frame):

    def __init__(self, parent, controller):
        keyname = StringVar()
        phone = StringVar()
        keyname_entry = tk.Entry(self, width=15, textvariable=keyname)
        keyname_entry.grid(column=2, row=2, sticky=E, padx=5, pady=5)
        label2 = tk.Label(self, text="Key Name: ")
        label2.grid(column=1, row=2, sticky=W, padx=5, pady=5)
        label3 = tk.Label(self, text="Key Type: ")
        label3.grid(column=1, row=3, sticky=W, padx=5, pady=5)
        button12 = tk.Button(self, text="BACK", command=lambda: controller.show_frame(StartPage)).grid(column=1, row=1, padx=5, pady=5, sticky=W)

        prime = tk.Radiobutton(self, text="Prime", variable=phone, value='prime').grid(column=1, row=4, sticky=(W, E))
        luckyprime = tk.Radiobutton(self, text="Lucky Prime", variable=phone, value='luckyprime').grid(column=2, row=4, sticky=(W, E))
        button11 = tk.Button(self, text="Generate Keys").grid(column=1, row=5, columnspan=2, sticky=(W, E))



app = MainFrame()
app.mainloop()

你的代码格式不正确。很抱歉,布莱恩先生。在这里,我对它进行了编辑,使其格式正确,我想。你有什么问题?你有错误吗?什么错误?它的行为方式是否出乎你的意料?它做错了什么?我有错误。只有“窗口”被创建,其中没有小部件。回溯(最近一次调用):文件“C:\Python34\ttk interface 3 revied.py”,第120行,在app=MainFrame()文件“C:\Python34\ttk interface 3 revied.py”中,第20行,在init frame=F(容器,self)文件“C:\Python34\ttk interface 3 revied.py”中,第58行,在init textframe1=tk.Text(self,宽度=70,高度=32)中。网格(column=3,row=2,rowspan=3,padx=5,pady=5,sticky=(S,E))文件“C:\Python34\lib\tkinter_init.py”,第2961行,在init小部件中,第2093行,在_setupself.tk=master.tk AttributeError中:“DecryptionPage”对象没有属性“tk”