tkinter

s591962

Новичок
Пользователь
Окт 12, 2021
130
3
18
Составляю программу с использованием графической оболочки tkinter. Упростил ее до предела вытащив кусочек.
Код:
import tkinter as tk
from tkinter import ttk

def get_entry():
    lb2["text"] = name1.get() #изменяем текст окна   

root = tk.Tk()#создаем корневой объект - окно   
root.title("Приложення ")     # устанавливаем заголовок окна
root.geometry("600x650+100+10")# устанавливаем размеры и расположение окнаокна
root.resizable(False, False) # запрещаем изменять окно

name1 = tk.Entry(root)
name1.grid(row=1, column=2, ipadx = 5, ipady = 20)    # размещаем метку в окне

lb2 = tk.Label(root, text = '1', relief = tk.RAISED, bd = 1,
               width = 18, height = 2)
lb2.grid(row=1, column=1, stick = 'ns')    # размещаем метку в окне

btn2 = tk.Button(root, text = 'Ввод', width = 8, height = 3, command = get_entry)
btn2.grid(row=1, column=3, stick = 'w')

root.mainloop()

Смысл вопроса. При запуске должно активироваться окно Entry. Сейчас я активирую его с помощью мыши, при сканировании в окне появляется информация. При нажатии кнопки эта информация передается в Label.
Задача в том чтобы при запуске окно активировалось без мышки, производится сканирование и информация передаться в Label сразу без кнопки, а окно Entry снова готово к сканированию.
 

s591962

Новичок
Пользователь
Окт 12, 2021
130
3
18
ничего не понятно, вам нужно чтобы текст из энтри был отображен в лейбле сразу как набрали текст в энтри?
Такая последовательность операций:
1. Запуская программу.
2. Сканирую штих код - информация появляется в ентри. Ничего в ручную не ввожу, с помощью мишки курсор в окно ентри не перевожу. Просто сразу после запуска сканирую. У оператора не будет не мышки не клавиатуры. Просто сканер.
3. Информация сразу передается в Label. Окно ентри очищается и готово к новому сканированию.
Это кусок программы. У меня встал стопор именно со сканированием в ентри. Если курсор навести на окно то сканирование производится. Но весь вопрос обойтись без мышки.
Спасибо
 

Валерка

Новичок
Пользователь
Фев 4, 2023
2
0
1
Я тоже не совсем понял, желательно не вырезать код а скинуть весь что бы понять что ты хочешь, вот может поможет

from tkinter import *
import tkinter as tk
import random


def get_entry(self):
self.e.insert(0, random.choices(self.txt))
self.lbl['text'] = self.scan.get()
self.after(5000, lambda: self.e.delete(0, END))
self.after(6000, lambda: get_entry(self))


class Scaner(tk.Tk):
def __init__(self):
super().__init__()
self.win = Tk()
self.win.resizable(False, False)
self.win.title("Приложения ")
self.win.geometry("600x650+100+10")
self.scan = StringVar()
self.txt = ('Морковь', 'Банан', 'Баклажан', 'Балтика-9')

# Entry
self.e = Entry(textvariable=self.scan)
self.e.grid(row=1, column=2, ipadx=5, ipady=20)

# Label
self.lbl = Label(text='1', relief=RAISED, bd=1, width=18, height=2)
self.lbl.grid(row=1, column=1, stick='ns')

# Button
self.btn = Button(text='Ввод', width=8, height=3, command=None)
self.btn.grid(row=1, column=3, stick='w')

self.lbl_2 = Label(text="выпадет рандомный товар !!!")
self.lbl_2.grid(row=2, column=2, stick='ns')
get_entry(self)
self.win.mainloop()


a = Scaner()
Python:
 

Валерка

Новичок
Пользователь
Фев 4, 2023
2
0
1
Каждые 5 секунд выподает рандомный товар из entry в label без мышки и кнопки) потом он стирается и цикл продолжается
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 583
457
83
Я тоже не совсем понял, желательно не вырезать код а скинуть весь что бы понять что ты хочешь, вот может поможет

from tkinter import *
import tkinter as tk
import random


def get_entry(self):
self.e.insert(0, random.choices(self.txt))
self.lbl['text'] = self.scan.get()
self.after(5000, lambda: self.e.delete(0, END))
self.after(6000, lambda: get_entry(self))


class Scaner(tk.Tk):
def __init__(self):
super().__init__()
self.win = Tk()
self.win.resizable(False, False)
self.win.title("Приложения ")
self.win.geometry("600x650+100+10")
self.scan = StringVar()
self.txt = ('Морковь', 'Банан', 'Баклажан', 'Балтика-9')

# Entry
self.e = Entry(textvariable=self.scan)
self.e.grid(row=1, column=2, ipadx=5, ipady=20)

# Label
self.lbl = Label(text='1', relief=RAISED, bd=1, width=18, height=2)
self.lbl.grid(row=1, column=1, stick='ns')

# Button
self.btn = Button(text='Ввод', width=8, height=3, command=None)
self.btn.grid(row=1, column=3, stick='w')

self.lbl_2 = Label(text="выпадет рандомный товар !!!")
self.lbl_2.grid(row=2, column=2, stick='ns')
get_entry(self)
self.win.mainloop()


a = Scaner()
Python:
код вставляйте как код - https://itfy.org/threads/kak-ne-nado-zadavat-voprosy.3450/#post-13566
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 583
457
83
Такая последовательность операций:
1. Запуская программу.
2. Сканирую штих код - информация появляется в ентри. Ничего в ручную не ввожу, с помощью мишки курсор в окно ентри не перевожу. Просто сразу после запуска сканирую. У оператора не будет не мышки не клавиатуры. Просто сканер.
3. Информация сразу передается в Label. Окно ентри очищается и готово к новому сканированию.
Это кусок программы. У меня встал стопор именно со сканированием в ентри. Если курсор навести на окно то сканирование производится. Но весь вопрос обойтись без мышки.
Спасибо

сканер работает как клавиатура?
есть ли конечный символ, типо переноса строки в конце?
 

s591962

Новичок
Пользователь
Окт 12, 2021
130
3
18
Спасибо за помощью.
Код:
from tkinter import *
 root = Tk()
 root.minsize(width=200, height=200)
 wid_1 = Entry(root, width=30)
#wid_1.icursor(0)
wid_1.focus_set()
wid_1.grid(row=1,column=0)
mainloop()
Нашёл ответ на другом сайте 3 года назад. Моя главная проблема решается оказывается просто
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 583
457
83
Спасибо за помощью.
Код:
from tkinter import *
 root = Tk()
 root.minsize(width=200, height=200)
 wid_1 = Entry(root, width=30)
#wid_1.icursor(0)
wid_1.focus_set()
wid_1.grid(row=1,column=0)
mainloop()
Нашёл ответ на другом сайте 3 года назад. Моя главная проблема решается оказывается просто
Python:
import tkinter as tk
from tkinter import ttk

def get_entry(sv):
    lb2["text"] = sv.get() #изменяем текст окна

root = tk.Tk()#создаем корневой объект - окно
root.title("Приложення ")     # устанавливаем заголовок окна
root.geometry("600x650+100+10")# устанавливаем размеры и расположение окнаокна
root.resizable(False, False) # запрещаем изменять окно

sv = tk.StringVar()

name1 = tk.Entry(root, textvariable=sv)
name1.grid(row=1, column=2, ipadx = 5, ipady = 20)    # размещаем метку в окне
name1.focus_set()

sv.trace("w", lambda name, index, mode, sv=sv: get_entry(sv))

lb2 = tk.Label(root, text = '1', relief = tk.RAISED, bd = 1,
               width = 18, height = 2)
lb2.grid(row=1, column=1, stick = 'ns')    # размещаем метку в окне

btn2 = tk.Button(root, text = 'Ввод', width = 8, height = 3, command = get_entry)
btn2.grid(row=1, column=3, stick = 'w')

root.mainloop()
 
  • Мне нравится
Реакции: s591962

s591962

Новичок
Пользователь
Окт 12, 2021
130
3
18
сканер работает как клавиатура?
есть ли конечный символ, типо переноса строки в конце?
оператор отсканировал этикетку.
посмотрел на Label, если все правильно сканирует следующую, а предыдущая записывается в словарь.
Но это уже мелочи, главное первичная активация курсора. А это решено
Код:
wid_1 = Entry(root, width=30)
wid_1.focus_set()
 

s591962

Новичок
Пользователь
Окт 12, 2021
130
3
18
Python:
import tkinter as tk
from tkinter import ttk

def get_entry(sv):
    lb2["text"] = sv.get() #изменяем текст окна

root = tk.Tk()#создаем корневой объект - окно
root.title("Приложення ")     # устанавливаем заголовок окна
root.geometry("600x650+100+10")# устанавливаем размеры и расположение окнаокна
root.resizable(False, False) # запрещаем изменять окно

sv = tk.StringVar()

name1 = tk.Entry(root, textvariable=sv)
name1.grid(row=1, column=2, ipadx = 5, ipady = 20)    # размещаем метку в окне
name1.focus_set()

sv.trace("w", lambda name, index, mode, sv=sv: get_entry(sv))

lb2 = tk.Label(root, text = '1', relief = tk.RAISED, bd = 1,
               width = 18, height = 2)
lb2.grid(row=1, column=1, stick = 'ns')    # размещаем метку в окне

btn2 = tk.Button(root, text = 'Ввод', width = 8, height = 3, command = get_entry)
btn2.grid(row=1, column=3, stick = 'w')

root.mainloop()
спасибо
 

s591962

Новичок
Пользователь
Окт 12, 2021
130
3
18
Python:
import tkinter as tk
from tkinter import ttk

def get_entry(sv):
    lb2["text"] = sv.get() #изменяем текст окна

root = tk.Tk()#создаем корневой объект - окно
root.title("Приложення ")     # устанавливаем заголовок окна
root.geometry("600x650+100+10")# устанавливаем размеры и расположение окнаокна
root.resizable(False, False) # запрещаем изменять окно

sv = tk.StringVar()

name1 = tk.Entry(root, textvariable=sv)
name1.grid(row=1, column=2, ipadx = 5, ipady = 20)    # размещаем метку в окне
name1.focus_set()

sv.trace("w", lambda name, index, mode, sv=sv: get_entry(sv))

lb2 = tk.Label(root, text = '1', relief = tk.RAISED, bd = 1,
               width = 18, height = 2)
lb2.grid(row=1, column=1, stick = 'ns')    # размещаем метку в окне

btn2 = tk.Button(root, text = 'Ввод', width = 8, height = 3, command = get_entry)
btn2.grid(row=1, column=3, stick = 'w')

root.mainloop()
Не могу понять что єто такое.
Код:
sv.trace("w", lambda name, index, mode, sv=sv: get_entry(sv))
Если можно по позициям иле де прочитать об єтом.
Встречается часто но расшифровки ни где не нашел.
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 583
457
83
Не могу понять что єто такое.
Код:
sv.trace("w", lambda name, index, mode, sv=sv: get_entry(sv))
Если можно по позициям иле де прочитать об єтом.
Встречается часто но расшифровки ни где не нашел.
 
-1

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 583
457
83
ничего не понятно, вам нужно чтобы текст из энтри был отображен в лейбле сразу как набрали текст в энтри?
 

Форум IT Специалистов