Я не могу писать в текстовом виджете Tkinter

Я пытаюсь сделать графический интерфейс с кнопками для отправки ежедневных отчетов персонала. Я зашел довольно далеко, но теперь я полностью застрял, я могу создавать кнопки и все остальное, но я не могу заставить его писать в текстовый виджет Tkinter. вот сценарий -

from tkinter import*
import random
import time;
import sys

root = Tk()
root.geometry("1600x800+0+0")
root.title("Report system")

text_Input = StringVar()
ADD = "0"


Tops = Frame(root, width = 1600,height = 700, relief=SUNKEN)
Tops.pack(side=TOP)

f1 = Frame(root, width = 650,height = 700, relief=SUNKEN)
f1.pack(side=RIGHT)

f2 = Frame(root, width = 950,height = 700, relief=SUNKEN)
f2.pack(side=LEFT)
#======================Time==================================================
localtime=time.asctime(time.localtime(time.time()))
#============================Info============================================
TitleH = Label(Tops, font=('arial', 60, 'bold'),text = "COMPANY",     fg = "blue4",bd=10, anchor='w')
TitleH.configure(background = "powder blue")
TitleH.grid(row=0, column=0)
TitleT = Label(Tops, font=('arial', 60, 'bold'),text=localtime,         fg = "blue4",bd=10, anchor='w')
TitleT.configure(background = "powder blue")
TitleT.grid(row=1, column=0)
#==========================Buttondef=======================
def btnClick(PrimeOperator):
    global operator
    operator = str(PrimeOperator)
    text_Input.set(PrimeOperator)

textDisplay = Entry(f2, font=('arial', 20, 'bold'), textvariable=text_Input,         bd=30, insertwidth=4,
                   bg = "powder blue", justify='center')
textDisplay.grid(columnspan=4)
#============================text===========================================

statusDisplay = Text(f1, font=('arial', 20, 'bold'), bd=60, width = 30,     height = 10,
                   bg = "powder blue")
statusDisplay.grid(columnspan=4)

btnadd=Button(f2,padx=16,pady=16,bd=8, fg = "black", font=("arial",20,'bold'),
          text = "add", bg = "powder blue", command=lambda:     statusDisplay.insert(INSERT, 'text_input').grid(row=4,column=2))

#===================OPERATOR=================================
btnop19=Button(f2,padx=16,pady=16,bd=8, fg = "black", font=    ("arial",20,'bold'),
              text = "OpTH19", bg = "powder blue", command=lambda:     btnClick("OpTH19")).grid(row=2,column=0)

btnop18=Button(f2,padx=16,pady=16,bd=8, fg = "black", font=("arial",20,'bold'),
              text = "OpTH18", bg = "powder blue", command=lambda:     
btnClick("OpTH18")).grid(row=2,column=1)

btnop8=Button(f2,padx=16,pady=16,bd=8, fg = "black", font=("arial",20,'bold'),
          text = "OpTH08", bg = "powder blue", command=lambda:     
btnClick("OpTH8")).grid(row=2,column=2)

btnop7=Button(f2,padx=16,pady=16,bd=8, fg = "black", font=("arial",20,'bold'),
          text = "OpTH07", bg = "powder blue", command=lambda:         
btnClick("OpTH7")).grid(row=3,column=0)

btnop5=Button(f2,padx=16,pady=16,bd=8, fg = "black", font=("arial",20,'bold'),
              text = "OpTH05", bg = "powder blue", command=lambda:     
btnClick("OpTH5")).grid(row=3,column=1)

btnop4=Button(f2,padx=16,pady=16,bd=8, fg = "black", font=("arial",20,'bold'),
              text = "OpTH04", bg = "powder blue", command=lambda:     
btnClick("OpTH4")).grid(row=3,column=2)

btnop3=Button(f2,padx=16,pady=16,bd=8, fg = "black", font=("arial",20,'bold'),
              text = "OpTH03", bg = "powder blue", command=lambda:     btnClick("OpTH3")).grid(row=4,column=1)

#=================================status======================================
btnontime=Button(f2,padx=16,pady=16,bd=8, fg = "black", font=    ("arial",20,'bold'),
              text = "On time", bg = "powder blue", command=lambda: btnClick("On     Time")).grid(row=2,column=3)
btnlate=Button(f2,padx=16,pady=16,bd=8, fg = "black", font=("arial",20,'bold'),
              text = "Is Late", bg = "powder blue", command=lambda:     btnClick("Late")).grid(row=3,column=3)
btnonleave=Button(f2,padx=16,pady=16,bd=8, fg = "black", font=    ("arial",20,'bold'),
                  text = "On leave", bg = "powder blue", command=lambda:         btnClick("On leave")).grid(row=4,column=3)
#=================================Print=======================================
btnadd=Button(f2,padx=16,pady=16,bd=8, fg = "black", font=("arial",20,'bold'),
              text = "add", bg = "powder blue", 
command='C').grid(row=4,column=2)


root.mainloop()

Итак, в основном я сначала нажимаю ontime, затем я хочу нажать на добавление, чтобы оно добавляло ontime в левую часть, которая является текстом Tkinter. Затем я нажимаю на оп, которая приходит вовремя, и нажимаю добавить для каждой операции. Итак, я хочу, чтобы это выглядело так:

ontime opth3 opth4 и т. д. и т. д.

Какое бесполезное название!

Biffen 21.04.2018 13:52

Итак, проблема в том, чтобы получить текст из Entry и добавить его в текстовый виджет? Другими словами, 99% этого кода не имеет отношения к проблеме и может / должно быть удалено?

Aran-Fey 21.04.2018 13:57

:( Биффен, ты имеешь в виду заголовок моей темы или заголовок моего кода, потому что я изменил его, так как это было название компании, но это мой заголовок темы, тогда мне жаль тебя, что ты считаешь это бесполезным. < 3

Billy Jarvis 21.04.2018 16:29

Спасибо тем, кто помогал редактировать мой вопрос. Я все еще новичок в этом и все еще учусь, только начал писать на Python около недели.

Billy Jarvis 22.04.2018 06:35
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
4
216
1

Ответы 1

Напишите функцию для вызова кнопки Добавлять вместо "C". Например:

def addfunction(event=None):
    statusDisplay.insert(END, operator)

Вам также понадобится некоторый проверяющий код, чтобы убедиться, что глобальная переменная оператор не является неопределенной или имеет неправильный тип. Также может быть полезно отслеживать, какие OP уже зарегистрированы, чтобы вы никогда не регистрировали OP несколько раз.

Дополнительное объяснение: Самый простой способ убедиться, что глобальная переменная оператор не является неопределенной, - это установить значение по умолчанию правильного типа перед ее первым использованием.

operator = ''

В противном случае вы можете проверить тип переменной с помощью if type(operator) == str для строк. Такой же синтаксис для других типов. Чтобы проверить, существует ли переменная, вы можно использовать предложение try.

Что касается отслеживания входных данных, я не совсем уверен, что именно вы хотите. Это также то, о чем вам придется подумать некоторое время. Приведу пример:

Должны ли выходы в statusDisplay разделяться пробелами, табуляциями, запятыми? Важно ли, если «вовремя» стоит первым в строке, или это не имеет значения? Подходят ли многострочные результаты? Хочу ли, чтобы «вовремя» и «опоздал» появились в одной строке? Вы отправите результаты в другую программу или функцию или, возможно, сохраните в файл; какой формат они захотят?

Когда вы определились с поведением, гораздо проще написать код и посмотреть, соответствует ли результат вам.

Также: попробуйте сначала реализовать это самостоятельно, и если это не сработает, вы можете попросить дополнительную помощь. Прежде чем это сделать: прочтите документацию и найдите решения в Google.

спасибо figbeam, который мне очень помог, я все еще новичок в этом, если вы можете, вы можете объяснить мне проверяющий код и прочее, потому что я понятия не имею, что они из себя представляют, но все равно вы довольно решаете мои проблемы, спасибо.

Billy Jarvis 21.04.2018 16:31

Спасибо, что объяснили мне это, я постараюсь написать это, а для statusDisplay я хочу, чтобы он выглядел примерно так: Доброе утро, мы начали утреннюю смену (11:00 - 19:00). Сегодня рабочих 5 человек. Их идентификаторы - op_th_th19, op_th_th14, op_th_th12, op_th_th15, op_th_th24. Поздние идентификаторы - идентификаторы при отпуске - это текст, который я копирую, вставляю и сообщаю в групповой чат каждый день. Я просто хочу сделать это так, чтобы мне не приходилось постоянно менять операторов (персонал), которые приходят каждый день, а также я хочу, чтобы их было больше. так что да, это будет на отдельной строке.

Billy Jarvis 22.04.2018 06:29

Другие вопросы по теме