Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 19, 2018 15:40:15

EgorSrche
Зарегистрирован: 2018-03-10
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Как вывести значения переменной в поле ввода?

Здравствуйте уважаемые программисты. Вы гораздо умнее, опытнее меня. Поэтому я к вам обращаюсь с банальным вопросом
Постараюсь обычный ситуацию. Продолжаю изучение питона, работаю с tkinter.
Пока нахожусь на этапе альфа версии будущего редактора. Есть текстовый файл в нём написано слово. По нажатию кнопки, это файл читается. Слово записывается в переменную. Вопрос как это слово вывести в другом поле ввода?

 from tkinter import *
def mycom():
 b= "D:\\wea.dat"
 with open(b, 'r') as g:  # открыть файл оригинала
  h = g.read()
  print(h)
window = Tk() # основа
window.title("weapons editor vc ")# заголовок
window.geometry("600x250+650+300")# Первые 2 определяют ширину и высоту окна. Последние 2 x и y координаты на экране.
window.configure(bg ='DimGray') # Цвет фона окна
L = Label(window, text='сюда', height=1, font=3) # надпись перед вводом
L.place(x=0, y=50) # коор надписи
e = Entry(window, width=22) # размер поле ввода width длина
e.place(x=45, y=50)# коор поле ввода
btn = Button(window, text="Давай", # текст кнопки
background="Teal", # фоновый цвет кнопки
foreground="Black", # цвет текста
padx="4", # отступ от границ до содержимого по горизонтали
pady="3", # отступ от границ до содержимого по вертикали
font="14", # высота шрифта
command=mycom)# кнопка
btn.place(x=130,y=130)
window.mainloop()

Офлайн

#2 Апрель 19, 2018 18:14:39

rami
Зарегистрирован: 2018-01-08
Сообщения: 281
Репутация: +  72  -
Профиль   Отправить e-mail  

Как вывести значения переменной в поле ввода?

Вот так:

 from tkinter import Tk,StringVar,Label,Entry,Button  #импортируем только то что надо
def mycom():
    with open(url,'r') as f:    #открыть файл оригинала
        var.set(f.read())       #прочитанное пишем в переменную
url="D:\\wea.dat"   #адрес файла
window=Tk() # основа
window.title("weapons editor vc ")  # заголовок
window.geometry("600x250+650+300")  # Первые 2 определяют ширину и высоту окна. Последние 2 x и y координаты на экране.
window.configure(bg='DimGray')      # Цвет фона окна
Label(window,text='сюда').grid(column=0,row=0) # надпись перед вводом
var=StringVar()  #переменная
Entry(window,width=22,textvariable=var).grid(column=1,row=0) # размер поле ввода width длина
Button(window,text="Давай",command=mycom).grid(column=3,row=2)  # кнопка
window.mainloop()

P.S. Для начала старайтесь не усложнять виджеты “рюшечками” (цвет, отступы, шрифты и т.д.), после того как всё заработает в простом виде, займётесь дизайном и украшением внешнего вида.

Офлайн

#3 Апрель 20, 2018 09:33:41

EgorSrche
Зарегистрирован: 2018-03-10
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Как вывести значения переменной в поле ввода?

Спасибо вам огромное огромное уважаемый rami. все выглядит просто великолепно. Ваш огромный опыт в Python. вчера весь день голову ломал над grid, везде написано непонятно, поэтому пользовался place. А у вас всё так красиво получилось, что я испытал восторг. Конечно буду разбираться с этим Grid. Главное терпение и желание. Очень хочется сделать графический редактор оружие для GTA Vice City. Если вам ничего нетрудно, Скажите пожалуйста, как называется это выпадающее меню, или что это такое? Просто хочется включить это в программу, но нужно знать как это называется. записал видеоролик, https://www.youtube.com/watch?v=ZXV9hV0iCL0&feature=youtu.be что я имею в виду, посмотрите его пожалуйста. Да да я ещё нуб, но стараюсь учиться. Все чего-то начинали. Очень буду рад простой подсказки.

Офлайн

#4 Апрель 20, 2018 11:13:44

rami
Зарегистрирован: 2018-01-08
Сообщения: 281
Репутация: +  72  -
Профиль   Отправить e-mail  

Как вывести значения переменной в поле ввода?

Добавил Combobox:

 from tkinter import Tk,StringVar,Label,Entry,Button  #импортируем только то что надо
from tkinter.ttk import Combobox    #импортируем только то что надо
def mycom():
    with open(url,'r') as f:        #открыть файл оригинала
        var1.set(f.read())           #прочитанное пишем в переменную
url="D:\\wea.dat"   #адрес файла
window=Tk() # основа
window.title("weapons editor vc ")  # заголовок
window.geometry("600x250+650+300")  # Первые 2 определяют ширину и высоту окна. Последние 2 x и y координаты на экране.
window.configure(bg='DimGray')      # Цвет фона окна
Label(window,text='сюда').grid(column=0,row=0) # надпись перед вводом
var1,var2=StringVar(),StringVar()   #переменные
Entry(window,width=22,textvariable=var1).grid(column=1,row=0)   #размер поле ввода width длина
Combobox(window,width=12,textvariable=var2,values=('Оружие1','Оружие2','Оружие3')).grid(column=4,row=0) #поле со списком
Button(window,text="Давай",command=mycom).grid(column=3,row=2)  #кнопка
window.mainloop()

Офлайн

#5 Апрель 21, 2018 12:12:00

EgorSrche
Зарегистрирован: 2018-03-10
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Как вывести значения переменной в поле ввода?

rami
Здравствуйте уважаемый rami. Огромное вам спасибо, что добавили Combobox. Сердечно вас благодарю, значение Combobox сделал кортеж.
В интернете очень мало информации по Combobox. Весь день искал, как получить значение из Combobox, например, человек выбрал из combobox uzi. Его мы передаем функцию, а дальше работаем с ним. Вот только как это сделать? Дайте хотя бы маленькую подсказку. Ещё раз спасибо за внимание.

 from tkinter import Tk,StringVar,Label,Entry,Button  #импортируем только то что надо
from tkinter.ttk import Combobox    #импортируем только то что надо
name_weapon=(("Unarmed", "BrassKnuckle", "ScrewDriver", "GolfClub",
              "NightStick", "Knife", "BaseballBat", "Hammer", "Cleaver", "Machete",
              "Katana", "Chainsaw", "Grenade", "DetonateGrenade", "TearGas", "Molotov",
              "Rocket", "Colt45", "Python", "Shotgun", "Spas12Shotgun", "StubbyShotgun",
              "Tec9", "Uzi", "SilencedIngram", "Mp5", "m4", "Ruger", "SniperRifle",
              "LaserScope", "RocketLauncher", "FlameThrower", "M60 ", "Minigun",
              "Detonator", "HeliCannon", "Camera"))
def mycom():
    with open(url, 'r') as f:  # открыть файл оригинала
        var1.set(f.read())  # прочитанное пишем в переменную
        text = unicode(Combobox.get())
        print(text)
url = "D:\\wea.dat"  # адрес файла
window=Tk() # основа
window.title("weapons editor vc ")  # заголовок
window.geometry("600x250+650+300")  # Первые 2 определяют ширину и высоту окна. Последние 2 x и y координаты на экране.
window.configure(bg='DimGray')      # Цвет фона окна
Label(window,text='сюда').grid(column=0,row=0) # надпись перед вводом
var1,var2=StringVar(), StringVar()   #переменные
Entry(window,width=22, textvariable=var1).grid(column=1,row=0)   #размер поле ввода width длина
Combobox(window,width=12,textvariable=var2,values=name_weapon).grid(column=4,row=0) #поле со списком
Button(window,text="Давай",command=mycom).grid(column=3,row=2)  #кнопка
window.mainloop()

Офлайн

#6 Апрель 21, 2018 12:38:55

rami
Зарегистрирован: 2018-01-08
Сообщения: 281
Репутация: +  72  -
Профиль   Отправить e-mail  

Как вывести значения переменной в поле ввода?

EgorSrche
…как получить значение из Combobox, например, человек выбрал из combobox uzi. Его мы передаем функцию, а дальше работаем с ним. Вот только как это сделать?
Обратите внимание на переменную var2, я её уже подключил к комбобоксу и она всегда содержит выбранное значение. Для получения используйте var2.get()

Удалите не нужные строки:
         text = unicode(Combobox.get())
        print(text)

Можете добавить новую надпись (после определения переменных var1,var2), чтобы посмотреть как выбранное значение из комбобокса передаётся другому виджету:
 Label(window,textvariable=var2).grid(column=1,row=2) # надпись показывает выбор в комбобоксе

Офлайн

#7 Апрель 21, 2018 13:17:01

EgorSrche
Зарегистрирован: 2018-03-10
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Как вывести значения переменной в поле ввода?

Сердечно вас благодарю за ваш ответ . Спасибо вам большое уважаемый rami . Как всё оказались просто. Я бы ещё долго мучиться если бы вы не сказали.

Офлайн

#8 Апрель 21, 2018 17:33:54

rami
Зарегистрирован: 2018-01-08
Сообщения: 281
Репутация: +  72  -
Профиль   Отправить e-mail  

Как вывести значения переменной в поле ввода?

При создании переменных:

 var1,var2=StringVar(), StringVar()      #переменные
они содержат пустую строку, но возможно будет полезней задать начальное значение для var2 которое будет отображаться в окошке комбобокса. Тогда добавьте сразу же строку кода:
 var2.set("Выберите оружие")

Отредактировано rami (Апрель 21, 2018 17:34:54)

Офлайн

#9 Апрель 22, 2018 13:31:45

EgorSrche
Зарегистрирован: 2018-03-10
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Как вывести значения переменной в поле ввода?

Здравствуйте, уважаемый rami. Большое спасибо вам Большое спасибо за ваш ответ. Я бы хотел бы понять, как работает функция Combobox.current() как она работает с кортежем.
Много времени потратил на код, вроде работает, как нужно, но буду доводит до ума.
https://www.youtube.com/watch?v=sXNpNfNQGBg&feature=youtu.be

 from tkinter import Tk,StringVar,Label,Entry,Button  #импортируем только то что надо
from tkinter.ttk import Combobox    #импортируем только то что надо
name_weapon=("Unarmed", "BrassKnuckle", "ScrewDriver", "GolfClub",
              "NightStick", "Knife", "BaseballBat", "Hammer", "Cleaver", "Machete",
              "Katana", "Chainsaw", "Grenade", "DetonateGrenade", "TearGas", "Molotov",
              "Rocket", "Colt45", "Python", "Shotgun", "Spas12Shotgun", "StubbyShotgun",
              "Tec9", "Uzi", "SilencedIngram", "Mp5", "m4", "Ruger", "SniperRifle",
              "LaserScope", "RocketLauncher", "FlameThrower", "M60 ", "Minigun",
              "Detonator", "HeliCannon", "Camera")
def vares():
 var1, var2, var3, var4, var5 = StringVar(), StringVar(), StringVar(), StringVar(), StringVar()
 var6, var7, var8, var9, var10 = StringVar(), StringVar(), StringVar(), StringVar(), StringVar()
 var11, var12, var13, var14, var15 = StringVar(), StringVar(), StringVar(), StringVar(), StringVar()
 var16, var17, var18, var19, var20 = StringVar(), StringVar(), StringVar(), StringVar(), StringVar()
 var21, var22, var23, var24, var25 = StringVar(), StringVar(), StringVar(), StringVar(), StringVar()
 var26, var27, var28  = StringVar(), StringVar(), StringVar()
 return var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19, var20, var21, var22, var23, var24, var25, var26, var27, var28
def mycom():
 with open(url, 'r') as f:  # открыть файл оригинала
  weapon = var2.get()# прочитанное пишем в переменную
  for i in f.readlines():  # читать построчно
    if weapon in i:  # искать слово
       old = i
       e = i
       e = e.split()
       sol = {str("название оружия"): e[0], str("тип огня"): e[1],
              str("диапазон"): e[2], str("скорость стрельбы"): e[3],
              str("время перезарядка"): e[4], str("количество боеприпасов"): e[5],
              str("урон"): e[6], str("скорость, с которой летит снаряд"): e[7],
              str("радиус действия оружия"): e[8],
              str("максимальное время, за которое может продержаться в воздухе снаряд"): e[9],
              str("вектор смещение огня x"): e[10], str("вектор смещение огня y"): e[11],
              str("вектор смещение огня z"): e[12], str("проигрывание анимации"): e[13],
              str("начало цикла анимации"): e[14], str("конец цикла анимации"): e[15],
              str("точки в анимации, где оружие стреляет"): e[16],
              str("точки в анимации, где оружие стреляет2"): e[17],
              str("точка в аним, где мы можем прорыв аним / атаки и убежать"): e[18],
              str("id модели оружия"): e[19], str("2 id модели оружия"): e[20],
              str("x"): e[21], str("y"): e[22], str("z"): e[23],
              str("a"): e[24], str("номер слота оружие"): e[25]}
       var3.set(e[0]) #название оружия
       var4.set(e[1]) #тип огня
       var5.set(e[2]) #диапазон
       var6.set(e[3]) #скорость стрельбы
       var7.set(e[4])# время перезарядка
       var8.set(e[5])# количество боеприпасов
       var9.set(e[6])# урон
       var10.set(e[7])# скорость, с которой летит снаряд
       var11.set(e[8])# радиус действия оружия
       var12.set(e[9])# максимальное время, за которое может продержаться в воздухе снаряд
       var13.set(e[10])# вектор смещение огня x
       var14.set(e[11])# вектор смещение огня y
       var15.set(e[12])# вектор смещение огня z
       var16.set(e[13])# проигрывание анимации
       var17.set(e[14])# начало цикла анимации
       var18.set(e[15])# конец цикла анимации
       var19.set(e[16])# точки в анимации, где оружие стреляет
       var20.set(e[17])# точки в анимации, где оружие стреляет2
       var21.set(e[18])# точка в аним, где мы можем прорыв аним / атаки и убежать
       var22.set(e[19])# id модели оружия
       var23.set(e[20])# 2 id модели оружия
       var24.set(e[21])# x
       var25.set(e[22])# y
       var26.set(e[23])# z
       var27.set(e[24])# a
       var28.set(e[25])# номер слота оружие
url = "D:\\weapon.dat"  # адрес файла
window=Tk() # основа
var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19, var20, var21, var22, var23, var24, var25, var26, var27, var28 = vares()
window.title("weapons editor vc ")  # заголовок
window.geometry("800x450+650+300")  # Первые 2 определяют ширину и высоту окна. Последние 2 x и y координаты на экране.
window.configure(bg='DimGray')      # Цвет фона окна
# Combobox.current(name_weapon[0])
Button(window,text="Давай",command=mycom).grid(column=4,row=14, padx=50, pady=30)  #кнопка
Entry(window,width=20, textvariable=var1).grid(column=1, row=0, padx=0, pady=5) #размер поле адреса ввода width длина
Label(window,text='путь').grid(column=0, row=0, padx=30, pady=0) # надпись перед вводом
Label(window,text='Название').grid(column=0,row=1, padx=0, pady=0) # надпись перед названием
Entry(window,width=20, textvariable=var3).grid(column=1,row=1, padx=15, pady=5) # поле имя оружие
Label(window,text='Тип оружие').grid(column=0,row=2, padx=5, pady=0) # надпись перед названием
Entry(window,width=20, textvariable=var4).grid(column=1, row=2, padx=0, pady=5) # поле тип оружие
Label(window,text='диапазон').grid(column=0,row=3, padx=5, pady=0) # надпись перед названием
Entry(window,width=20, textvariable=var5).grid(column=1, row=3, padx=0, pady=5) # поле тип оружие
Label(window,text='скорость стрельбы').grid(column=0,row=4, padx=5, pady=0) # надпись перед названием
Entry(window,width=20, textvariable=var6).grid(column=1, row=4, padx=0, pady=5) # поле тип оружие
Label(window,text='время перезарядки').grid(column=0,row=5, padx=5, pady=0) # надпись перед названием
Entry(window,width=20, textvariable=var7).grid(column=1, row=5, padx=0, pady=5) # поле тип оружие
Label(window,text='скорость стрельбы').grid(column=0,row=6, padx=5, pady=0) # надпись перед названием
Entry(window,width=20, textvariable=var8).grid(column=1, row=6, padx=0, pady=5) # поле тип оружие
Label(window,text='урон').grid(column=0,row=7, padx=5, pady=0) # надпись перед названием
Entry(window,width=20, textvariable=var9).grid(column=1, row=7, padx=0, pady=0) # поле тип оружие
Label(window, text='скорость полета снаряда').grid(column=4, row=1, padx=5, pady=0)  # надпись перед названием
Entry(window, width=20, textvariable=var10).grid(column=5, row=1, padx=0, pady=0)  # поле тип оружие
Label(window, text='радиус действия оружия').grid(column=4, row=2, padx=5, pady=0)  # надпись перед названием
Entry(window, width=20, textvariable=var11).grid(column=5, row=2, padx=0, pady=0)  # поле тип оружие
Label(window, text='макс время в воздухе снаряд').grid(column=4, row=3, padx=5, pady=0)  # надпись перед названием
Entry(window, width=20, textvariable=var12).grid(column=5, row=3, padx=0, pady=0)  # поле тип оружие
Label(window, text='вектор смещение огня x').grid(column=4, row=4, padx=5, pady=0)  # надпись перед названием
Entry(window, width=20, textvariable=var13).grid(column=5, row=4, padx=0, pady=0)  # поле тип оружие
Label(window, text='вектор смещение огня y').grid(column=4, row=5, padx=5, pady=0)  # надпись перед названием
Entry(window, width=20, textvariable=var14).grid(column=5, row=5, padx=0, pady=0)  # поле тип оружие
Label(window, text='вектор смещение огня z').grid(column=4, row=6, padx=5, pady=0)  # надпись перед названием
Entry(window, width=20, textvariable=var15).grid(column=5, row=6, padx=0, pady=0)  # поле тип оружие
Label(window, text='проигрывание анимации').grid(column=4, row=7, padx=5, pady=0)  # надпись перед названием
Entry(window, width=20, textvariable=var16).grid(column=5, row=7, padx=0, pady=0)  # поле тип оружие
Label(window, text='начало цикла анимации').grid(column=0, row=7, padx=5, pady=0)  # надпись перед названием
Entry(window, width=20, textvariable=var17).grid(column=1, row=7, padx=0, pady=0)  # поле тип оружие
Label(window, text='конец цикла анимации').grid(column=0, row=8, padx=5, pady=5)  # надпись перед названием
Entry(window, width=20, textvariable=var18).grid(column=1, row=8, padx=0, pady=5)  # поле тип оружие
Label(window, text='точки в ани оружие стреляет').grid(column=0, row=9, padx=5, pady=0)  # надпись перед названием
Entry(window, width=20, textvariable=var19).grid(column=1, row=9, padx=0, pady=0)  # поле тип оружие
Label(window, text='точки в ани оружие стреляет2').grid(column=0, row=10, padx=5, pady=5)  # надпись перед названием
Entry(window, width=20, textvariable=var20).grid(column=1, row=10, padx=0, pady=0)  # поле тип оружие
Label(window, text='точка в аним, прорыв ани атаки').grid(column=0, row=11, padx=5, pady=2)  # надпись перед названием
Entry(window, width=20, textvariable=var21).grid(column=1, row=11, padx=0, pady=0)  # поле тип оружие
Label(window, text='id модели оружия').grid(column=0, row=12, padx=5, pady=0)  # надпись перед названием
Entry(window, width=20, textvariable=var22).grid(column=1, row=12, padx=0, pady=0)  # поле тип оружие
Label(window, text='2id модели оружия').grid(column=4, row=8, padx=5, pady=0)  # надпись перед названием
Entry(window, width=20, textvariable=var23).grid(column=5, row=8, padx=0, pady=0)  # поле тип оружие
Label(window, text='x').grid(column=4, row=9, padx=5, pady=0)  # надпись перед названием
Entry(window, width=20, textvariable=var24).grid(column=5, row=9, padx=0, pady=0)  # поле тип оружие
Label(window, text='y').grid(column=4, row=10, padx=5, pady=0)  # надпись перед названием
Entry(window, width=20, textvariable=var25).grid(column=5, row=10, padx=0, pady=5)  # поле тип оружие
Label(window, text='z').grid(column=4, row=11, padx=5, pady=0)  # надпись перед названием
Entry(window, width=20, textvariable=var26).grid(column=5, row=11, padx=0, pady=5)  # поле тип оружие
Label(window, text='a').grid(column=4, row=12, padx=5, pady=0)  # надпись перед названием
Entry(window, width=20, textvariable=var27).grid(column=5, row=12, padx=0, pady=0)  # поле тип оружие
Label(window, text='номер слота оружие').grid(column=4, row=13, padx=5, pady=0)  # надпись перед названием
Entry(window, width=20, textvariable=var28).grid(column=5, row=13, padx=0, pady=0)  # поле тип оружие
Combobox(window,width=12,textvariable=var2,values=name_weapon).grid(column=4, row=0, padx=2, pady=0) #поле со списком
window.mainloop()

Офлайн

#10 Апрель 22, 2018 22:40:39

rami
Зарегистрирован: 2018-01-08
Сообщения: 281
Репутация: +  72  -
Профиль   Отправить e-mail  

Как вывести значения переменной в поле ввода?

EgorSrche
Я бы хотел бы понять, как работает функция Combobox.current() как она работает с кортежем.
Так не правильно. Для чего это нужно?

Вы можете дать файл weapon.dat?

Ваш код нужно “укорачивать” с помощью циклов.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version