Я собираюсь написать программу с этим стартовым файлом, предоставленным мне моим инструктором. Проблема в том, что файл, который она нам дала, не запускается. Я не знаю, связано ли это с тем, что я использую IDLE, или код работает только в определенных операционных системах.
Например, я использую Windows, но мой учитель использует и Windows, и Linux. Я не могу связаться с ней, чтобы решить проблему, поэтому я надеялся, что вы, ребята, сможете.
В настоящее время, когда я запускаю стартовый файл, я получаю сообщение об ошибке:
TypeError: main() is not defined.
Когда я переключаю main()
на GUI()
внизу программы, я получаю новую ошибку:
TypeError: __init__() missing 1 required positional argument: 'rootWindow'
Это полный код:
from tkinter import*
from tkinter import tk
class GUI:
def __init__(self,rootWindow):
self.label = ttk.Label(rootWindow, text = "Hellow World!")
self.label.grid(row=0,column=0)
self.button1=ttk.Button(rootWindow,text = "Hello",command=self.hello)
self.button1.grid(row=0,column=1)
self.button2=ttk.Button(rootWindow,text = "Bye",command=self.bye)
self.button2.grid(row=0,column=2)
def bye(self):
self.label.config(text = "GoodbyeWorld!")
def hello(self):
self.label.config(text = "HelloWorld!")
def main():
global label
rootWindow = Tk()
gui = GUI(rootWindow)
rootWindow.mainloop()
main()
main
не определено. GUI.main
есть.
В этом коде есть две проблемы:
Вам нужно отменить отступ функции main
, иначе вы не сможете просто вызвать main
, потому что она является частью класса GUI
.
Импорт испорчен. Вам нужно import tkinter as ttk
, потому что иначе ttk
не определено, а import Tk
вместо import tk
.
Обратите внимание, что я использую Python 3, поэтому ваш вариант может немного отличаться, если вы используете Python 2.
Полный исправленный код ниже:
import tkinter as ttk
from tkinter import Tk
class GUI:
def __init__(self,rootWindow):
self.label = ttk.Label(rootWindow, text = "Hellow World!")
self.label.grid(row=0,column=0)
self.button1=ttk.Button(rootWindow,text = "Hello",command=self.hello)
self.button1.grid(row=0,column=1)
self.button2=ttk.Button(rootWindow,text = "Bye",command=self.bye)
self.button2.grid(row=0,column=2)
def bye(self):
self.label.config(text = "GoodbyeWorld!")
def hello(self):
self.label.config(text = "HelloWorld!")
def main():
global label
rootWindow = Tk()
gui = GUI(rootWindow)
rootWindow.mainloop()
main()
Теперь я понимаю, что это имеет большой смысл и очень помогло запустить стартовый файл! Большое спасибо!
GUI()
требует аргументаrootWindow
.