【问题标题】:tkinter Classes are being annoying [closed]tkinter 课程很烦人[关闭]
【发布时间】:2016-09-03 21:11:29
【问题描述】:

我一直在尝试学习 tkinter 的基础知识,以便在我尝试学习其他任何内容之前,可以将一些输入字段的内容打印到控制台。我已经达到了我想要的样子,但没有我需要的功能。有人建议我创建一个类并这样做,此时我的 GUI 是一个空框架,没有我添加的任何小部件。有谁知道为什么会这样?

from tkinter import *

class Information:
    def __init__(self, master):
        frame = Frame(master)
        frame.pack()

        self.titleLabel = Label(frame, text='Welcome to the Redaction Solutions editor!\nPlease enter the requested filepaths below.')
        self.titleLabel.pack(side=TOP)

        self.originalLabel = Label(frame, text='File to be edited')
        self.originalLabel.pack(side=LEFT)
        self.originalEntry = Entry(frame)
        self.originalEntry.pack(side=RIGHT)

        self.namesLabel = Label(frame, text='Items to be removed')
        self.namesLabel.pack(side=LEFT)
        self.namesEntry = Entry(frame)
        self.namesEntry.pack(side=RIGHT)

        self.destinationLabel = Label(frame, text='Edited file')
        self.destinationLabel.pack(side=LEFT)
        self.destinationEntry = Entry(frame)
        self.destinationEntry.pack(side=RIGHT)

        self.invoiceLabel = Label(frame, text='Invoice data')
        self.invoiceLabel.pack(side=LEFT)
        self.invoiceEntry = Entry(frame)
        self.invoiceEntry.pack(side=RIGHT)

        self.demoButton = Button(frame, text="Test", command=self.test)
        self.demoButton.pack(side=LEFT)
        self.resetButton = Button(frame, text="Reset Fields", bg="red", fg="black", command=self.reset)
        self.resetButton.pack(side=RIGHT)

    def test(self):
        print(self.originalEntry.get())
        print(self.namesEntry.get())
        print(self.destinationEntry.get())
        print(self.invoiceEntry.get())

    def reset(self):
        self.originalEntry.delete(0, END)
        self.namesEntry.delete(0, END)
        self.destinationEntry.delete(0, END)
        self.invoiceEntry.delete(0, END)

root = Tk()
root.wm_title("RS")
b = Information
root.iconbitmap(r'c:\Users\pbrow\Documents\logoicon.ico')
root.mainloop()

我也有 99% 的把握,这大概是编写这个程序的最糟糕的方式......我对此表示同意。我只是希望它能够正常运行,我已经让自己担心在(很多)以后的日期进行优化

【问题讨论】:

    标签: python user-interface tkinter frame tkinter-entry


    【解决方案1】:

    别介意我之前尝试的答案。问题是:

    root = Tk()
    root.wm_title("RS")
    b = Information
    root.iconbitmap(r'c:\Users\pbrow\Documents\logoicon.ico')
    root.mainloop()
    

    你应该这样做:

    b = Information(root)
    

    实际创建信息对象。

    【讨论】:

    • 我很确定它必须是b = Information(root),因为__init__ 方法需要一个参数(超出self)。
    • @Blckknght 你是对的,我更新了答案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2014-05-20
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    相关资源
    最近更新 更多