Я отредактировал твой пост, чтобы устранить большинство ошибок. А именно
.grid(sticky=W)
должно быть -> .grid(sticky='W')
- Я использовал последовательное форматирование для
import tkinter as tk
- т.е..
Label()
-> tk.Label()
Entry()
-> tk.Entry()
Тем не менее, я получаю сообщение об ошибке, отличное от вашего сообщения:
Traceback (most recent call last):
File "C:/Users/rparkhurst/PycharmProjects/Workspace/workspace.py", line 66, in <module>
options1.configure(window, font = "none 12 bold").grid(row = 5, column = 0, sticky = 'W')
File "C:\Program Files\Python 3.5\lib\tkinter\__init__.py", line 1330, in configure
return self._configure('configure', cnf, kw)
File "C:\Program Files\Python 3.5\lib\tkinter\__init__.py", line 1321, in _configure
self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
_tkinter.TclError: unknown option "-use"
Итак, давайте рассмотрим, как читать это, потому что кажется, что вы не понимаете. Вы можете увидеть вверху line 66
(каждая ошибка будет выглядеть следующим образом, а , несомненно, скажет вам, на какой строке она была ). Так как же мы исправим ошибку? Что ж, давайте посмотрим на строку (также часть трассировки ошибок):
options1.configure(window, font = "none 12 bold").grid(row = 5, column = 0, sticky = 'W')
Хммм, похоже, это злится на нас, что-то связанное с self._configure('configure', cnf, kw)
. Как насчет того, чтобы просто закомментировать эту строку и посмотреть, что произойдет?
Traceback (most recent call last):
File "C:/Users/rparkhurst/PycharmProjects/Workspace/workspace.py", line 68, in <module>
options1.pack()
File "C:\Program Files\Python 3.5\lib\tkinter\__init__.py", line 1990, in pack_configure
+ self._options(cnf, kw))
_tkinter.TclError: cannot use geometry manager pack inside . which already has slaves managed by grid
Хм, все еще не та ошибка, которую вы опубликовали, но мы кое-что получаем! Кажется, вы также микшируете .grid()
и .pack()
(не предполагается этого делать). Мы просто переключим его на .grid()
и будем использовать настройки по умолчанию (вы можете изменить их самостоятельно). БАМ это работает!
Окончательный результат:
import sys
import tkinter as tk
import time
#import pygame
#pygame.init()
### load sounds
'''
opening_music = pygame.mixer.Sound("01 - Opening.ogg")
prelude_music = pygame.mixer.Sound("02 - Prelude.ogg")
nations_rage_music = pygame.mixer.Sound("03 - Nations Rage.ogg")
sanctuary_music = pygame.mixer.Sound("04 - Sanctuary.ogg")
reunion_music = pygame.mixer.Sound("05 - Reunion.ogg")
rebels_be_music = pygame.mixer.Sound("06 - Rebels Be.ogg")
'''
### create music list
music_lst = ['opening_music', 'prelude_music', 'nations_rage_music',
'sanctuary_music', 'reunion_music', 'rebels_be_music']
### window configuration:
window = tk.Tk()
window.title("Alarm Clock")
window.configure(background='gray')
### clock function:
def ticktock():
clock_time_string = time.strftime('%H:%M:%S')
clock.config(text = clock_time_string)
clock.after(200,ticktock)
### alarm set label:
tk.Label(window, text = "Alarm Set", fg = "black", bg = 'grey', font = "none 12 bold").grid(row = 2, column = 0, sticky = 'W')
### alarm string entry box:
alarm_string = tk.Entry(window, width = 20, bg = 'white')
alarm_string.grid(row = 3, column = 0, sticky = 'W')
### pick alarm sound menu
def change(*args):
var.get()
tk.Label(text = "Alarm Sounds", fg = 'black', bg = 'gray', font = 'none 12 bold').grid(row = 4, column = 0, sticky = 'W')
music_var = tk.StringVar(window)
music_var.set(music_lst[0])
music_var.trace('w', change)
options1 = tk.OptionMenu(window, music_var, music_lst[0], music_lst[1], music_lst[2], music_lst[3], music_lst[4], music_lst[5])
#options1.configure(window, font = "none 12 bold").grid(row = 5, column = 0, sticky = 'W')
options1.grid()
### alarm function
def alarm(alarm_string_hour):
while alarm_string:
if alarm_string == clock_time_string('%H:%M:%S'):
pass
## play sound
## try / except
## clear alarm
clock = tk.Label(window, font = ('times', 100, 'bold'), bg = 'grey')
clock.grid(row = 1, column = 0, sticky = 'W')
ticktock()
clock.mainloop()
Кажется, вы пытались сделать что-то незаконное с options1
. Хорошая идея, если вы не уверены, что можете сделать, это попробовать print(dir(some_variable))
. Это перечислит все методы и атрибуты переменной, к которой вы можете получить доступ. Вы также можете прочитать некоторую документацию. Для tkinter
я предпочитаю использовать этот источник документации