0 / 0 / 0
Регистрация: 19.02.2014
Сообщений: 47

GUI tkinter textbox

07.09.2016, 23:45. Показов 3426. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток всем.
начал изучать tkinter, у меня windows, python 2.7
застопорился на трёх проблемах, если кто в силах, то помогите
1. Нужно создать статичный textbox в который будет помещаться построчно информация из "print" и фокус будет всегда на последней строке. Например: в коде

Python
1
2
print "1"
print "2"  #и тд
в текстбоксе будет
Code
1
2
3
4
"1"
"2"
"..."
"..."
подобие некого лог окна.

2. У меня есть lis=Listbox(panelFrame3, selectmode=SINGLE, height=4)
и есть кнопка "button1"
необходимо при выборе значения в листбоксе, что бы при нажатии кнопки выводило print "выбранное значение"

3. создать текстовое поле и кнопку, откуда команды будут выполнятся как в командной строке. Например:
запуск файла из командной строки винды - python filename.py
так вот когда я введу в поле эту команду, при нажатии на кнопку оно должно передать в cmd


я примерно разбираюсь потихоньку, но вот некоторые нюансы не уловил
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.09.2016, 23:45
Ответы с готовыми решениями:

GUI-приложение Tkinter с БД SQL
Прошу помощи в организации поиска и фильтрации. import sqlite3 # импорт модуля SQLite import tkinter as tk # импорт...

Python, tkinter, переменные в GUI
Здраствуйте, помогите пожалуйста. Задание: Напишите скрипт, как в примере с флажками; в отличии от примера значения ассоциированных...

Python, модуль tkinter GUI
Здравствуйте, помогите пожалуйста не получается выполнить задание Задание: Напишите приложение с меню, содержащим два пункта: Color и...

14
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
07.09.2016, 23:57
Цитата Сообщение от Pr1M Посмотреть сообщение
начал изучать tkinter, у меня windows, python 2.7
Сразу советую взять 3.5, 2.7 не актуален давно + вместо tkinter лучше возьми pyqt. tkinter это трата своего времени в пустую.

Цитата Сообщение от axe77 Посмотреть сообщение
Всё больше "влюбляюсь" в PyQt (PySide) и жалею о времени, потраченном на ковыряние Tkinter(((
Pr1M, Не трать время понапрасну, учись на ошибках других.
0
0 / 0 / 0
Регистрация: 19.02.2014
Сообщений: 47
08.09.2016, 10:05  [ТС]
если можно то опишите аргументировано. Потому как, что одному хорошо, то другому никак.
а просто ответ: "мне не нравится tkinter а нравится qt, поэтому все юзайте qt" - не годится)
без обид)
П.С. и по посту хотелось бы помощи.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
08.09.2016, 11:17
Пфф, да без проблем, вот https://www.cyberforum.ru/pyth... 39264.html, сюда можно дописать ещё аргументов, но мне если честно лениво делать это в сотый раз.
0
 Аватар для ilnurgi
141 / 141 / 38
Регистрация: 20.02.2012
Сообщений: 597
08.09.2016, 13:21
Цитата Сообщение от alex925 Посмотреть сообщение
вот Почему все так не любят tkinter?
хорошо что я не все
я пишу на ткинтер, мне его хватает
1
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
08.09.2016, 14:26
ilnurgi, Занятие мазохизмом дело добровольное)
1
0 / 0 / 0
Регистрация: 19.02.2014
Сообщений: 47
16.09.2016, 17:50  [ТС]
всё еще актуальны все вопросы!
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
16.09.2016, 17:54
Pr1M, за это время можно было самому во всем разобраться
0
 Аватар для ilnurgi
141 / 141 / 38
Регистрация: 20.02.2012
Сообщений: 597
17.09.2016, 06:07
Pr1M, ну вы хоть что нибудь пробуете сами? что конкретно у вас не получается?
0
0 / 0 / 0
Регистрация: 19.02.2014
Сообщений: 47
18.09.2016, 20:02  [ТС]
выбор элемента в lisbox я нашел и сделал только теперь ругается некий IndexError: tuple index out of range
ругается он при первом нажатии, а второй раз всё отлично срабатывает
Python
1
2
3
4
5
6
7
self.lis=Listbox(self.panelFrame3, selectmode=SINGLE, height=1)
self.lis.bind("<Button-1>", self.OnDouble)
 
  def OnDouble(self, ev):
          widget = ev.widget
          selection=widget.curselection()
          value = widget.get(selection[0])

а в остальных пунктах пока туго
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
18.09.2016, 22:19
Pr1M, и зачем нам обрубок кода? Показывай все.
0
0 / 0 / 0
Регистрация: 19.02.2014
Сообщений: 47
19.09.2016, 01:14  [ТС]
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
93
94
95
96
97
98
99
100
from Tkinter import *
import ttk
import tkFileDialog
import serial
import threading
from serial.tools.list_ports import *
 
DEBUG = True
 
class MainRB():
  def __init__(self, *args, **kwargs):
    self.root = Tk()
    self.root.minsize(height = 550, width = 1200)
    self.root.maxsize(height = 550, width = 1200)
    self.panelFrame3 = Frame(self.root, height = 45, width = 1200, bg = 'black')
    ###################
    self.panelFrame3.place(x=1, y=1)
    self.lis=Listbox(self.panelFrame3, selectmode=SINGLE, height=4)
    self.scrollbarLis = Scrollbar(self.panelFrame3)
    #####################
    self.scrollbarLis['command'] = self.lis.yview
    self.lis['yscrollcommand'] = self.scrollbarLis.set
 
    ######################
    self.scrollbarLis.place(x=140, y=5, width = 80, height = 35)
    self.connectBtn = ttk.Button(self.panelFrame3, text = 'Connect to --->')
    self.refreshBtn = ttk.Button(self.panelFrame3, text = "Refresh")
    self.disconnectBtn = ttk.Button(self.panelFrame3, text = 'Disconnect')
    self.quitBtn = ttk.Button(self.panelFrame3, text = 'Quit')
 
    ########################
    self.quitBtn.bind("<Button-1>", self.Quit)
    self.connectBtn.bind("<Button-1>", self.SerialConnect)
    self.refreshBtn.bind("<Button-1>", self.RefreshComPorts)
    self.disconnectBtn.bind("<Button-1>", self.SerialDisconnect)
 
    self.lis.bind("<Button-1>", self.OnDouble)
 
    ########################
    self.connectBtn.place(x = 10, y = 10, width = 120, height = 25)
 
    self.lis.place(x=140, y=5, width = 80, height = 35)
 
    self.refreshBtn.place(x = 230, y = 10, width = 50, height = 25)
    self.disconnectBtn.place(x = 400, y = 10, width = 100, height = 25)
    self.quitBtn.place(x = 1088, y = 10, width = 100, height = 25)
 
    self.root.mainloop()
 
 
  def RefreshComPorts(self, ev):
      import serial.tools.list_ports
      self.lis.delete(0,2)
      com_ports = 0
      com_ports = [path for (path, name, hw) in sorted(serial.tools.list_ports.comports())]
      len_com_ports = len(com_ports)
      if len_com_ports>0:
          for i in com_ports:
              self.lis.insert(END,i)
      else:
          print ("COM port is not found.")
 
  def SerialConnect(self, ev):
 
      if serial.isOpen() == True:
          serial.close()
      if len_com_ports>0:
          serial.baudrate = DEFAULT_BAUD_RATE
          try:
            serial.port = '%s' % self.value
          except:
            print "COM port`s value is not found."
      try:
          serial.open()
          print("Connected to: " + serial.portstr)
      except:
          print "COM port is not found."
 
  def SerialDisconnect(self, ev):
      if serial.isOpen() == True:
          serial.close()
          print(serial.portstr + " is disconnect.")
      else: print("Connection is not found.")
 
  def Quit(self, ev):
      if serial.isOpen() == True:
          serial.close()
          print(serial.portstr + " is disconnect.")
      print "Bye."
      self.root.destroy()
    
  def OnDouble(self, ev):
          widget = ev.widget
          selection=widget.curselection()
          self.value = widget.get(selection[0])
          print 'Current port: %s' % self.value
 
 
if __name__ == "__main__":
    app = MainRB()
При подключении 1-нескольких устройств в лист боксе отображается список ком портов.
Когда я нажимаю на ком порт первый раз то выскакивает сообщение
Code
1
2
3
4
5
6
7
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 1536, in __call__
    return self.func(*args)
  File "C:\MyBasicPy\testframe.py", line 199, in OnDouble
    self.value = widget.get(selection[0])
IndexError: tuple index out of range

второй раз уже всё нормально
0
 Аватар для ilnurgi
141 / 141 / 38
Регистрация: 20.02.2012
Сообщений: 597
19.09.2016, 09:04
Python
1
self.lis.bind("<Button-1>", self.OnDouble)
замените на
Python
1
self.lis.bind("<<ListboxSelect>>", self.OnDouble)
0
0 / 0 / 0
Регистрация: 19.02.2014
Сообщений: 47
19.09.2016, 09:17  [ТС]
как всё просто оказалось, спасибо)
а что на счёт остальных пунктов, может знаете?
1. print выводить в текстбокс, создав тем самым подобие лог окна
2. писать команды для cmd строки у меня в окошке и потом, по нажатию кнопки, передавать на выполнение в командную строку.
0
 Аватар для ilnurgi
141 / 141 / 38
Регистрация: 20.02.2012
Сообщений: 597
19.09.2016, 09:26
Цитата Сообщение от Pr1M Посмотреть сообщение
1. print выводить в текстбокс, создав тем самым подобие лог окна
ну а какие проблемы?

текстбокса я у вас пока не заметил, как пробуте писать туда?
Цитата Сообщение от Pr1M Посмотреть сообщение
2. писать команды для cmd строки у меня в окошке и потом, по нажатию кнопки, передавать на выполнение в командную строку.
а это не гуглится? я бы использовал subprocess, т.к. там можно и ответы ещё получить

вы попробуйте сами все, и пишите что не получаете.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.09.2016, 09:26
Помогаю со студенческими работами здесь

GUI, Tkinter, canvas and frame
Привет, я только начинаю это изучать, так что вопрос наверное глупый. В чём разница между canvas и frame?:sigh:

tkinter корректно запустить GUI
Здравствуйте! В Питоне совсем недавно и хочется автоматизировать рутинные задачи со звуковыми файлами. В данном случае не понимаю почему...

GUI tkinter зависание интерфейса
Здравствуйте Мне нужно сделать простой интерфейс для программы. При нажатии на кнопку Start запуск программы, при нажатии на кнопку...

Phyton gui с использованием Tkinter
Можете помочь задачей. Необходимо найти приблизительное значение e и pi с помощью формул e=1+1/1!+1/2!+1/3!+... ...

В чем дело. Python GUI tkinter
Пишу мелкую игру для школы, программа задает вопрос, пользователь вводит ответ, она выводит правильно или нет и переходит к следующему...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

Новые блоги и статьи
Очистка реквизитов документа при копировании
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