2015-10-25 5 views
1
from tkinter import * 

#Create the window 
root = Tk() 

#Modify root window 
root.title("Simple GUI") 
root.geometry("200x50") 

app = frame(root) 
label = Label(app, text = "This is a label") 
label.grid() 


#kick of the event loop 
root.mainloop() 

Я следую руководству YouTube, чтобы узнать о графическом интерфейсе Python tkinter. Но когда я запускаю вышеуказанный код, он приходит с ошибкой.Python GUI - от 2.7 до 3.5

Traceback (most recent call last): 
    File "C:/Users/Nathan/Desktop/Python/Python GUI/Simple GUI.py", line 14, in <module> 
    app = frame(root) 
NameError: name 'frame' is not defined 

Я знаю, что это что-то делать с frame, я попытался Frame и он не работает. Не могли бы вы помочь мне заставить его работать, спасибо!

настоящее время я использую Python 3.5 и учебник в 2,7

+0

Когда вы говорите, что вы пытались «Frame», и это не сработало, какова была ошибка? «Рамка» - подходящее решение. –

ответ

1

Есть две вещи неправильно с вашего сценария. Первый из них дает ошибку, и вы уже работали, как это исправить:

app = Frame(root) 

Вторая проблема заключается в том, что метка не будет появляться в кадре без надлежащего управления макета. Чтобы исправить это, вызовите pack() на раме:

label = Label(app, text = "This is a label") 
label.grid() 
app.pack() 
0
from tkinter import * 
App = Tk() 
App.geometry("400x400") 
L = Label(App, text="Hello") 
L.pack() 

Вам не нужно использовать рамку.

+0

Хотя это правда, OP не нужно использовать фрейм, который не отвечает на заданный вопрос. Кроме того, этот код не будет работать, потому что у метки есть родительский элемент 'v', но вы создали только виджет с именем' V' - case. –

1

Вы получили тот факт, что модуль 2.x называется Tkinter, но в 3.x он называется tkinter. Однако класс Frame не изменил первую букву на нижний регистр. Он по-прежнему является рамкой.

app = Frame(root) 

Один из способов преодолеть разницу импорта в ImportError when importing Tkinter in Python

+0

ОП заявили, что попробовали это. –

+0

@silentphoenix: OP неверен или не учитывает некоторые детали. Ответ на самом деле заключается в использовании 'Frame', а не' frame'. –

0

Во-первых, понять, что всякий раз, когда вы хотите создать ярлык или рамки убедитесь, что вы используете его первую букву капитала. Напр. Label() или Frame(). В приведенном выше примере используйте: app = Frame (корень) , а затем вам нужно использовать «сетку()», чтобы просто красиво упаковать рамку. В приведенном выше примере используйте: app.grid() Удачи!

Смежные вопросы