Я нуб из Python, пытаюсь объединить несколько вещей, которые я изучил с помощью уроков; создание графического интерфейса с Guizero специально.

Я создал объект TextBox с именем player_name и объект PushButton с именем create_story. Моя цель - отключить кнопку, если текстовое поле пусто, и включить кнопку, когда что-то было введено в поле.

Документация guizero перечисляет «enable ()» и «disable ()» как методы, прикрепленные к PushButton, но не вдаваясь в подробности: https://lawsie.github.io/guizero/pushbutton/#methods

Полный код на данный момент:

import random
from guizero import App, Text, TextBox, PushButton, ButtonGroup, Combo, Box

def print_story():
    print("Button Pressed")

app = App(title="Visual Adventure", width=550, height=400,)

hello_message = Text(app, text="Hello, Traveler", size=20, color="red")
story_message = Text(app, text="Would you like to hear a tale?", size=14, color="black")

# organize into box with grid
selections = Box(app, layout="grid")

# text for questions
name_ques = Text(selections, text="What is your name?", size=10, color="black", grid=[0,0], align="left")
gender_ques = Text(selections, text="Boy or a girl?", size=10, color="black", grid=[0,2], align="left")
day_ques = Text(selections, text="What day is it?", size=10, color="black", grid=[0,4], align="left")

# text for grid padding
pad1 = Text(selections, text="        ", size=10, grid=[0,1], align="left")
pad2 = Text(selections, text="        ", size=10, grid=[0,3], align="left")

# interactive objects
player_name = TextBox(selections, width=15, grid=[1,0], align="top")
player_gender = ButtonGroup(selections, options=[ ["Boy", "He"], ["Girl", "She"] ], selected="He", horizontal=True, grid=[1,2], align="top")
day_set = Combo(selections, options=["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], selected="Monday", grid=[1,4], align="top")

create_story = PushButton(app, command=print_story, text="Tell me!")

if not player_name.get():
    create_story.disable()
elif player_name.get():
    create_story.enable()

app.display()

Ошибка:

Traceback (most recent call last):
  File "/home/pi/Desktop/python/VisualAdventure.py", line 32, in <module>
    create_story.disable()
  File "/usr/local/lib/python3.4/dist-packages/guizero/PushButton.py", line 59, in disable
    self.config(state=DISABLED)
NameError: name 'DISABLED' is not defined
1
JSchub 28 Май 2017 в 06:41

2 ответа

Лучший ответ

Поздравляем, вы нашли ошибку. Как указано в пакете:

Это предварительная версия, поэтому могут быть ошибки и функции могут измениться.

Как и в этом, все еще есть ошибки, поскольку Guizero все еще находится в альфа-версии. Конкретное обязательство, которое сделало эту ошибку, было: https://github.com/lawsie/guizero/commit/236064b878654388388388388298388298291328291 там не было допущено никаких ошибок, на самом деле объединили запрос на извлечение ). Как вы можете видеть здесь, этот человек забыл импортировать tkinter.DISABLE и tkinter.ENABLE.

Вы можете сообщить о проблеме здесь: https://github.com/lawsie/guizero/issues надеюсь, они скоро это изменят, поскольку это очень легко исправить.

1
abccd 28 Май 2017 в 04:17

Обойти это, используя: create_story ["state"] = "disabled" и т. Д.

0
Bobfishcake 29 Май 2017 в 14:35