Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/88: Рейтинг темы: голосов - 88, средняя оценка - 4.68
60 / 44 / 18
Регистрация: 05.03.2019
Сообщений: 313

Выполнение функции по нажатию кнопки ENTER

29.04.2019, 09:42. Показов 17624. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Написал программу, которая позволяет просматривать курсы валют на конкретные даты. Но не могу понять как сделать что бы на кнопку "Show" можно было нажать клавишей ENTER.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
 from tkinter import*
import requests
import json
 
 
#[url]http://www.nbrb.by/API/ExRates/Currencies[/url][/{Cur_ID}]
#[url]http://www.nbrb.by/API/ExRates/Rates/145?onDate=год-месяц-число[/url]
urlUSD = 'http://www.nbrb.by/API/ExRates/Rates/145?onDate='
urlRUR = 'http://www.nbrb.by/API/ExRates/Rates/298?onDate=' 
 
def fetch_rate(currencyUrl, date):
    url = currencyUrl + date
    request = requests.get(url)
    rates = request.json()
    rate = rates['Cur_OfficialRate']
    return rate
 
 
def set_text_to(control, text):
    control.delete(0,END)
    control.insert(0,text)
    return
 
 
def showRateUSD():
    date = date_text.get()
    rate = fetch_rate(urlUSD, date)
    print(rate)
    set_text_to(entryUSD, rate)
 
 
def showRateRUR():
    date = date_text.get()
    rate = fetch_rate(urlRUR, date)
    print(rate)
    set_text_to(entryRUR, rate)
 
 
def showRates():
    showRateUSD()
    showRateRUR()
    
   
root = Tk()
root.title("Currencies")
root.background = 'black'
root.geometry('250x150+960+400')
root.resizable(False, False)
root['bg'] = "#0d92a6"
 
 
text1 = Label(root, text = 'YYYY-MM-DD', bg="#0d92a6", fg='white', font='Follyfont 11', padx="15", pady="6")
text1.pack(side=TOP)
 
textUSD = Label(root, text = 'USD', bg="#0d92a6", fg='white', font='Follyfont 11', padx="15", pady="6")
textUSD.place(x=40, y=60)
 
textRUR = Label(root, text = '100RUR', bg="#0d92a6", fg='white', font='Follyfont 11', padx="15", pady="6")
textRUR.place(x=150, y=60)
 
date_text = StringVar()
dateEntry = Entry(root, width=12, bg="#ebebeb", fg='#2c2c2c', textvariable=date_text)
dateEntry.pack(anchor="c")
 
 
entryUSD = Entry(root, bg="#ebebeb", fg='#2c2c2c')
entryUSD.pack(side=LEFT)
 
entryRUR = Entry(root, bg="#ebebeb", fg='#2c2c2c')
entryRUR.pack(side=LEFT)
 
u_get1 = Button(root,  width = '17',fg='#2c2c2c', text="Show", font='Follyfont 11', command=showRates)
u_get1.place(x=60, y=120)
 
 
 
 
root.mainloop()
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.04.2019, 09:42
Ответы с готовыми решениями:

Выполнение скрипта по нажатию кнопки из админки
Доброго времени суток. Я только начал изучение django. Стоит задача запустить выполнение python скрипта из админки при нажатий кнопки...

Выполнение действия по нажатию кнопки Enter
Привет! Такой вопрос: есть код private void button1_Click(object sender, KeyEventArgs e) { if (Keys.Enter ==...

Выполнение действия по нажатию кнопки Enter
Форумчане, доброго вам времени суток! Столкнулся сейчас с такой вот проблемой: на форме у меня есть 2 текстбокса и две кнопки,...

11
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,302
29.04.2019, 17:36
Зачем нажимать на enter по кнопке? Проще по enter ту же функцию вызвать

Python
1
root.bind('<Return>', showRates)
0
60 / 44 / 18
Регистрация: 05.03.2019
Сообщений: 313
29.04.2019, 17:53  [ТС]
Выбивает вот такую ошибку
Миниатюры
Выполнение функции по нажатию кнопки ENTER  
0
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,302
29.04.2019, 17:55
Лучший ответ Сообщение было отмечено Onet1me как решение

Решение

Можно создать функцию

Python
1
2
3
4
def showRatesReturn(e):
    showRates()
 
root.bind('<Return>', showRatesReturn)
1
60 / 44 / 18
Регистрация: 05.03.2019
Сообщений: 313
29.04.2019, 18:11  [ТС]
Спасибо, все заработало!
0
60 / 44 / 18
Регистрация: 05.03.2019
Сообщений: 313
30.05.2019, 12:07  [ТС]
У меня есть еще один вопрос. Как сделать что по двойному нажатию мыши информация из Entry "entryUSD" попадала в буфер обмена
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
from tkinter import*
import requests
import json
from datetime import datetime
 
#http://www.nbrb.by/API/ExRates/Currencies[/{Cur_ID}]
#http://www.nbrb.by/API/ExRates/Rates/145?onDate=год-месяц-число
urlUSD = 'http://www.nbrb.by/API/ExRates/Rates/145?onDate='
urlRUR = 'http://www.nbrb.by/API/ExRates/Rates/298?onDate=' 
 
def fetch_rate(currencyUrl, date):
    url = currencyUrl + date
    request = requests.get(url)
    rates = request.json()
    rate = rates['Cur_OfficialRate']
    return rate
 
 
def set_text_to(control, text):
    control.delete(0,END)
    control.insert(0,text)
    return
 
 
def showRateUSD():
    date_ch = date_text.get().replace('.', ',').split(',')
    date = str(datetime.strptime ('-'.join([date_ch[2], date_ch[1], date_ch[0]]), '%Y-%m-%d')).split()[0]
    rate = fetch_rate(urlUSD, date)
    set_text_to(entryUSD, rate)
 
 
 
 
def showRateRUR():
    date_ch = date_text.get().replace('.', ',').split(',')
    date = str(datetime.strptime ('-'.join([date_ch[2], date_ch[1], date_ch[0]]), '%Y-%m-%d')).split()[0]
    rate = fetch_rate(urlRUR, date)
    set_text_to(entryRUR, rate)
 
 
 
def showRates():
    showRateUSD()
    showRateRUR()
    
    
   
def showRatesReturn(e):
    showRates()
 
 
 
   
root = Tk()
root.title("Currencies")
#root.iconbitmap(r'C:\Windows\Masha.ico')
root.background = 'black'
root.geometry('250x150+960+400')
root.resizable(False, False)
root['bg'] = "#0d92a6"
#root.overrideredirect(1)
 
 
text1 = Label(root, text = 'DD.MM.YYYY', bg="#0d92a6", fg='white', font='Follyfont 11', padx="15", pady="6")
text1.pack(side=TOP)
 
textUSD = Label(root, text = 'USD', bg="#0d92a6", fg='white', font='Follyfont 11', padx="15", pady="6")
textUSD.place(relx=.15, rely=.4)
 
textRUR = Label(root, text = '100RUR', bg="#0d92a6", fg='white', font='Follyfont 11', padx="15", pady="6")
textRUR.place(relx=.60, rely=.4)
 
date_text = StringVar()
dateEntry = Entry(root, width=12, bg="#ebebeb", fg='#2c2c2c', textvariable=date_text)
dateEntry.pack(anchor="c")
dateEntry.focus()
 
 
entryUSD = Entry(root, bg="#ebebeb", fg='#2c2c2c', bd=2, width=19)
entryUSD.place(relx=.01, rely=.6)
 
entryRUR = Entry(root, bg="#ebebeb", fg='#2c2c2c', bd=2, width=19)
entryRUR.place(relx=.51, rely=.6)
 
u_get1 = Button(root,  width = '16',fg='#2c2c2c', relief="ridge", text="Show", command=showRates)
u_get1.place(relx=.25, rely=.8)
 
root.bind ('<Return>', showRatesReturn)
root.bind('<Escape>', lambda e: root.destroy())
root.mainloop()
0
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,302
30.05.2019, 13:18
Лучший ответ Сообщение было отмечено Onet1me как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
from tkinter import*
import requests
import json
from datetime import datetime
import clipboard
 
#http://www.nbrb.by/API/ExRates/Currencies[/{Cur_ID}]
#http://www.nbrb.by/API/ExRates/Rates/145?onDate=год-месяц-число
urlUSD = 'http://www.nbrb.by/API/ExRates/Rates/145?onDate='
urlRUR = 'http://www.nbrb.by/API/ExRates/Rates/298?onDate=' 
 
def fetch_rate(currencyUrl, date):
    url = currencyUrl + date
    request = requests.get(url)
    rates = request.json()
    rate = rates['Cur_OfficialRate']
    return rate
 
 
def set_text_to(control, text):
    control.delete(0,END)
    control.insert(0,text)
    return
 
 
def showRateUSD():
    date_ch = date_text.get().replace('.', ',').split(',')
    date = str(datetime.strptime ('-'.join([date_ch[2], date_ch[1], date_ch[0]]), '%Y-%m-%d')).split()[0]
    rate = fetch_rate(urlUSD, date)
    set_text_to(entryUSD, rate)
 
 
 
 
def showRateRUR():
    date_ch = date_text.get().replace('.', ',').split(',')
    date = str(datetime.strptime ('-'.join([date_ch[2], date_ch[1], date_ch[0]]), '%Y-%m-%d')).split()[0]
    rate = fetch_rate(urlRUR, date)
    set_text_to(entryRUR, rate)
 
 
 
def showRates():
    showRateUSD()
    showRateRUR()
    
    
   
def showRatesReturn(e):
    showRates()
 
 
 
   
root = Tk()
root.title("Currencies")
#root.iconbitmap(r'C:\Windows\Masha.ico')
root.background = 'black'
root.geometry('250x150+960+400')
root.resizable(False, False)
root['bg'] = "#0d92a6"
#root.overrideredirect(1)
 
 
text1 = Label(root, text = 'DD.MM.YYYY', bg="#0d92a6", fg='white', font='Follyfont 11', padx="15", pady="6")
text1.pack(side=TOP)
 
textUSD = Label(root, text = 'USD', bg="#0d92a6", fg='white', font='Follyfont 11', padx="15", pady="6")
textUSD.place(relx=.15, rely=.4)
 
textRUR = Label(root, text = '100RUR', bg="#0d92a6", fg='white', font='Follyfont 11', padx="15", pady="6")
textRUR.place(relx=.60, rely=.4)
 
date_text = StringVar()
dateEntry = Entry(root, width=12, bg="#ebebeb", fg='#2c2c2c', textvariable=date_text)
dateEntry.pack(anchor="c")
dateEntry.focus()
 
 
entryUSD = Entry(root, bg="#ebebeb", fg='#2c2c2c', bd=2, width=19)
entryUSD.place(relx=.01, rely=.6)
entryUSD.bind('<Double-Button-1>', lambda x: clipboard.copy(x.widget.get()))
 
entryRUR = Entry(root, bg="#ebebeb", fg='#2c2c2c', bd=2, width=19)
entryRUR.place(relx=.51, rely=.6)
 
u_get1 = Button(root,  width = '16',fg='#2c2c2c', relief="ridge", text="Show", command=showRates)
u_get1.place(relx=.25, rely=.8)
 
root.bind ('<Return>', showRatesReturn)
root.bind('<Escape>', lambda e: root.destroy())
root.mainloop()
1
60 / 44 / 18
Регистрация: 05.03.2019
Сообщений: 313
30.05.2019, 17:49  [ТС]
Спасибо тебе большое за помощь. Может ты знаешь еще как сделать что бы программа в трее появлялась или просто в панели управления. А то очень неудобно
0
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,302
30.05.2019, 18:05
Цитата Сообщение от Onet1me Посмотреть сообщение
Может ты знаешь еще как сделать что бы программа в трее появлялась или просто в панели управления
В tkinter нет средств для этого, но тут gui совсем простой, можно перевести на pyqt там можно сделать
0
60 / 44 / 18
Регистрация: 05.03.2019
Сообщений: 313
30.05.2019, 18:26  [ТС]
pyQT сутки с установками промучился, так и не сделал. Выдает ошибки и не хочет работать( И версию питона менял и все равно нифига(
0
60 / 44 / 18
Регистрация: 05.03.2019
Сообщений: 313
03.06.2019, 15:41  [ТС]
Привет, разобрался с PyQT, но не могу теперь функции подогнать, помоги пожалуйста:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# -*- coding: utf-8 -*-
 
# Form implementation generated from reading ui file 'des.ui'
#
# Created: Fri May 31 00:25:52 2019
#      by: pyside-uic 0.2.15 running on PySide 1.2.4
#
# WARNING! All changes made in this file will be lost!
 
from PySide import QtCore, QtGui
 
 
class Ui_Form(object):
    def setupUi(self, Form):
        #Main Window
        Form.setObjectName("Form")
        Form.resize(250, 150)
        Form.setFixedSize(250, 150)
        Form.setAutoFillBackground(False)
        Form.setStyleSheet('background-color: #0d92a6;')
        Form.setWindowIcon(QtGui.QIcon("icon.png"))
        #Input Data
        self.lineEdit = QtGui.QLineEdit(Form)
        self.lineEdit.setGeometry(QtCore.QRect(90, 20, 80, 20))
        self.lineEdit.setStyleSheet('background-color: white;')
        #self.lineEdit.inputMask(self. 0000-00-00)
        self.lineEdit.setObjectName("lineEdit")
        #Output USD
        self.lineEdit_2 = QtGui.QLineEdit(Form)
        self.lineEdit_2.setGeometry(QtCore.QRect(20, 80, 80, 20))
        self.lineEdit_2.setStyleSheet('background-color: white;')
        self.lineEdit_2.setObjectName("lineEdit_2")
        #Output RUR
        self.lineEdit_3 = QtGui.QLineEdit(Form)
        self.lineEdit_3.setGeometry(QtCore.QRect(150, 80, 80, 20))
        self.lineEdit_3.setStyleSheet('background-color: white;')
        self.lineEdit_3.setObjectName("lineEdit_3")
        #Name Date
        self.label_date = QtGui.QLabel(Form)
        self.label_date.setGeometry(QtCore.QRect(115, 5, 46, 13))
        self.label_date.setObjectName("label_date")
        #Name USD
        self.label_USD = QtGui.QLabel(Form)
        self.label_USD.setGeometry(QtCore.QRect(50, 60, 46, 13))
        self.label_USD.setObjectName("label_USD")
        #Name RUR
        self.label_RUR = QtGui.QLabel(Form)
        self.label_RUR.setGeometry(QtCore.QRect(175, 60, 46, 13))
        self.label_RUR.setObjectName("label_RUR")
        #Btn
        self.pushButton = QtGui.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(90, 120, 80, 20))
        self.pushButton.setStyleSheet('background-color: white;')
        #self.pushButton.returnPressed()
        self.pushButton.setObjectName("pushButton")
        
        
 
       
 
        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)
 
    def retranslateUi(self, Form):
        Form.setWindowTitle(QtGui.QApplication.translate("Form", "Currencies", None, QtGui.QApplication.UnicodeUTF8))
        self.label_date.setText(QtGui.QApplication.translate("Form", "DATE", None, QtGui.QApplication.UnicodeUTF8))
        self.label_USD.setText(QtGui.QApplication.translate("Form", "USD", None, QtGui.QApplication.UnicodeUTF8))
        self.label_RUR.setText(QtGui.QApplication.translate("Form", "RUR", None, QtGui.QApplication.UnicodeUTF8))
        self.pushButton.setText(QtGui.QApplication.translate("Form", "Show", None, QtGui.QApplication.UnicodeUTF8))
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
from PySide import QtCore, QtGui
import sys
from Layout import Ui_Form
import requests
import json
from datetime import datetime
import clipboard
 
#Create application
app = QtGui.QApplication(sys.argv) 
#Create form   
Form = QtGui.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
#logic
#http://www.nbrb.by/API/ExRates/Currencies[/{Cur_ID}]
#http://www.nbrb.by/API/ExRates/Rates/145?onDate=год-месяц-число
urlUSD = 'http://www.nbrb.by/API/ExRates/Rates/145?onDate='
urlRUR = 'http://www.nbrb.by/API/ExRates/Rates/298?onDate=' 
 
def fetch_rate(currencyUrl, date):
    url = currencyUrl + date
    request = requests.get(url)
    rates = request.json()
    rate = rates['Cur_OfficialRate']
    return rate
 
 
def set_text_to(control, text):
    control.delete(0,END)
    control.insert(0,text)
    return
 
 
def showRateUSD():
    date_ch = date_text.replace('.', ',').split(',')
    date = str(datetime.strptime ('-'.join([date_ch[2], date_ch[1], date_ch[0]]), '%Y-%m-%d')).split()[0]
    rate = fetch_rate(urlUSD, date)
    set_text_to(entryUSD, rate)
    #print (rate)
 
 
 
 
def showRateRUR():
    date_ch = date_text.replace('.', ',').split(',')
    date = str(datetime.strptime ('-'.join([date_ch[2], date_ch[1], date_ch[0]]), '%Y-%m-%d')).split()[0]
    rate = fetch_rate(urlRUR, date)
    set_text_to(entryRUR, rate)
    print (rate)
 
 
 
def showRates():
    showRateUSD()
    showRateRUR()
    
    
   
def showRatesReturn(e):
    showRates()
 
 
#Btn
date_text = ui.lineEdit.text()
#date_text = int(float(date_txt)
print (date_text)
 
ui.pushButton.clicked.connect(showRates)
 
 
 
#Form.bind ('<Return>', showRatesReturn)
#Form.bind('<Escape>', lambda e: root.destroy())
 
sys.exit(app.exec_())
0
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,302
03.06.2019, 19:49
Не устанавливается pyside на python 3.7, а что именно не получается?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.06.2019, 19:49
Помогаю со студенческими работами здесь

Выполнение функции по нажатию Enter
Скажите, как мне выполнить функцию по нажатию на Enter в Windows Form's? Программа проста: в один textbox пользователь вводит...

Выполнение функции по нажатию Enter
Доброго времени суток! возник вопрос: Мне нужно записать значение функции в TextBox и после ввода значения в текстбокс, по нажатию...

Выполнение макроса по нажатию Enter
Помогите пожалуйста. Ест поле Имя. Надо чтобы после ввода данных при нажатии ентер запускался макрос1.

Выполнение расчетов по нажатию на enter
Здравствуйте, в форме есть несколько текстбоксов в которые вожу данные, после чего нажимаю на бутон (кнопку) и вообщем происходят мои...

Привязать выполнение действия кнопки на нажатие кнопки Enter
У меня кнопка - Button, выполняет такое то действие, не подскажите, как привязать выполнение действия этой кнопки на нажатие кнопки Enter?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru