Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 9, 2016 19:34:17

NikolasM
Зарегистрирован: 2016-09-09
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Меню программ на Python

Здравствуйте.
Хочу написать свое меню программ для Линукс на Питоне, но не знаю с чего начать.
“Дайте ориентир пожалуйста”, а умным дяденькам прошу не издеваться, направляя изучать многотомные учебники - уже не раз с такими сталкивался , чуть ли не с Basic намекали начинать. Что бы не получилось как в том советском фильме - “только настоящие герои, идут в обход”. Хотел написать простое меню, а через десять лет написал свою ОСь… всем на “зло”.
Мне бы по простому:
- этот код создает окно
- этот код задает размеры
- этот убирает шапку (рамку)
- этот делает поп-апом
- этот создает фрейм (или как там)
- это алгоритм согласно строки в файле создает список разделов
и т.д.
Простите, сам занимаюсь 3d графикой, поэтому у меня все начинается с GUI, а потом уже логика программная - мне так удобней мыслить. У программистов наоборот - сначала программирование, а потом визуальное оформление. Я и на Питон обратил внимание после изучения Blender3d (BGE) - там он используется как язык скриптов для игрового движка… вот ссылка на мою мини иргу (WIP), что бы понятней было ( проект не коммерческий - не реклама) - The Quad Room mini game WIP
Если кто-то поможет, и я постараюсь не остаться в долгу - правда могу помочь только в 3d и BGE, ну и в GIMP (аналог Photoshop), или вектором. Но я все объясню по-простому, без излишних маневров. Могу и текстуры создать и некоторые модели. А интеллекта у программистов хватит что бы создать такой же или лучше Квад рум… вы же умища!

п.с. я при виде программного кода немного теряюсь, как кролик пред питоном, чуть что - могу и дрыснуть в утеки

Прикреплённый файлы:
attachment menu.png (326,3 KБ)

Офлайн

#2 Сен. 10, 2016 01:30:29

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9992
Репутация: +  857  -
Профиль   Отправить e-mail  

Меню программ на Python

Можешь в Qt Designer'е сделать интерфейс, а потом подключить его в PyQt.



Офлайн

#3 Сен. 10, 2016 12:34:25

NikolasM
Зарегистрирован: 2016-09-09
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Меню программ на Python

py.user.next
Можешь в Qt Designer'е сделать интерфейс, а потом подключить его в PyQt.
Простите, а функционала tkinter не хватит для этого? Там ведь тоже фреймы есть… если окну задать цвет белый и фрейму то же - вот этого и достаточно. И если во второй фрейм можно встроить алгоритм отображения значков - и этого достаточно. Если для кнопок можно отключить объемность и поставить значек - вот этого тоже достаточно.
А где взять полный список парметров классов для tkinter - например как классу Tk задать поп-ап режим и запуск строго по центру? А то все пока как то в разбросс… я то думал есть какая то простая таблица-справка.
И сейчас я напишу страшную вещь - будучи немного 3d-шником (дизайнером), я не хочу использовать графическое дизайнерство того же Qt. Меня устраивает страшный редактор gedit - так интересней, когда понимаешь код, а не видишь только визуальный результат его. А то сча в Qt налеплю фендиклюшек, и что дальше? Пока не пойму кода этих феньдиклюшек - миссия не выполнима.
Да и pyQt это сторонняя библиотека - так тоже пока не интиресно.

Отредактировано NikolasM (Сен. 10, 2016 12:43:27)

Офлайн

#4 Сен. 10, 2016 13:44:23

NikolasM
Зарегистрирован: 2016-09-09
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Меню программ на Python

  
from tkinter import * #этот код подключает библотеку tkinker
root = Tk() #создает основное окно
root["bg"] = "white" #задает окну белый цвет
root.geometry('800x400+10+10') #свойства (размер и положение), поставишь вместо англ. "x" русское "х" - "х" и получишь
root. overrideredirect (True) #отключает компоновку
root.mainloop()  #конец программы

Подскажите кто нибудь пожалуйста:
параметр geometry - как задать положение по центру экрана при запуске, да еще и при любых разрешениях? Или есть иной параметр?
И как заставить окно закрываться при кликании вне самого окна?

Отредактировано NikolasM (Сен. 10, 2016 15:17:39)

Офлайн

#5 Сен. 10, 2016 14:00:40

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9992
Репутация: +  857  -
Профиль   Отправить e-mail  

Меню программ на Python

NikolasM
Простите, а функционала tkinter не хватит для этого?
Да это для приложений, слепленных на коленке.

NikolasM
Там ведь тоже фреймы есть… если окну задать цвет белый и фрейму то же - вот этого и достаточно.
Да там фреймы пакуются на окно через одно место.

NikolasM
Если для кнопок можно отключить объемность и поставить значек - вот этого тоже достаточно.
Там ничего нельзя ставить никуда. Это же не PyQt, где всё может быть изменено.

NikolasM
А где взять полный список парметров классов для tkinter
Да да да и это тоже. А где же взять документацию к tkinter?
А потом, когда найдёшь документацию (по сусекам наскребёшь пару документаций), окажется, что в tkinter'е просто нет каких-то элементарных вещей.

NikolasM
И сейчас я напишу страшную вещь - будучи немного 3d-шником (дизайнером), я не хочу использовать графическое дизайнерство того же Qt. Меня устраивает страшный редактор gedit - так интересней, когда понимаешь код, а не видишь только визуальный результат его.
Можешь и код писать http://zetcode.com/gui/pyqt4/
Но разница между кодом и формой из дизайнера в том, что форму можно переделать в любой момент хоть как за несколько минут (перепаковать объекты, что-то перенести, поменять размещение, по-быстрому переписать кнопки, метки, назначить сочетания клавиш). В коде же ты один объект будет переделывать полчаса, включая все проверки, всё ли правильно, всё ли согласуется с его новым состоянием. Поэтому делают форму и либо подгружают её, либо через pyuic транслируют в код на питоне.

NikolasM
Да и pyQt это сторонняя библиотека - так тоже пока не интиресно.
Ставится из репозиториев.

NikolasM
Меня устраивает страшный редактор gedit
Это же два притопа три прихлопа редактор. Кроме подсветки там пара плагинов есть и всё.



Отредактировано py.user.next (Сен. 10, 2016 14:02:05)

Офлайн

#6 Сен. 10, 2016 14:26:16

NikolasM
Зарегистрирован: 2016-09-09
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Меню программ на Python

py.user.next
Да это для приложений, слепленных на коленке.
- пока не заню ни на коленках ни на верстаке, не могу и ответить… но начну с коленок

py.user.next
Да там фреймы пакуются на окно через одно место.
- там фрейм прописывается как и положено, понять только как сделать горизонтальную компановку в режиме 2к1…

py.user.next
Там ничего нельзя ставить никуда. Это же не PyQt, где всё может быть изменено.
-
 img = BitmapImage('C:\\Wall\\Abstract_4396.jpg')
button["image"] = img
, какая то левая фигня наверное. Наверное если порыться, найдется и еще левее фигня со стилями… дайте пока окно сделать с фреймами, а то мои дизайнерские мозги немного противятся коду.

py.user.next
да да да и это тоже. А где же взять документацию к tkinter? А потом, когда найдёшь документацию (по сусекам наскребёшь пару документаций), окажется, что в tkinter'е просто нет каких-то элементарных вещей.
- да документацию нашел, правда она для меня немного не удобная, осталось разобраться на счет всех функций… тогда и буду говорить о недостатках

py.user.next
Но разница между кодом и формой из дизайнера в том, что форму можно переделать в любой момент хоть как за несколько минут (перепаковать объекты, что-то перенести, поменять размещение, по-быстрому переписать кнопки, метки, назначить сочетания клавиш). В коде же ты один объект будет переделывать полчаса, включая все проверки, всё ли правильно, всё ли согласуется с его новым состоянием. Поэтому делают форму и либо подгружают её, либо через pyuic транслируют в код на питоне.
- ну это уже не серьезно, если понимаешь код, это на уровне cut и paste… со стороны для “нормального” человека - быстрые и не понятные движения программиста.

py.user.next
Ставится из репозиториев.
- но остается при этом сторонней разработкой, а я пока хочу узнать функционал встроенной - а то не познав возможности tkinter, начну не дай Бог на него грешить, и только программистов смешить.

py.user.next
Это же два притопа три прихлопа редактор. Кроме подсветки там пара плагинов есть и всё.
- в два притопа три прихлопа если напишу программу, буду и вальс танцевать, и танго. А редактор нормальный - вертикального взлета я и не требую от него, но если бы была кнопка отдельная - “создать программу как ты задумал СРАЗУ”, было бы весьма интересно. И как мне кажется, лучше говорить - “о-го-го, у него даже есть подсветка синтаксиса, и нумерация строк, и подсветка парных скобок, подсветка активной строки! Крутень”.

п.с. http://zetcode.com/gui/pyqt4/ - а ведь просил же, НЕ ИЗДЕВАТСЯ… там даже на ненашенском написано…

Отредактировано NikolasM (Сен. 10, 2016 15:31:05)

Офлайн

#7 Сен. 10, 2016 15:21:54

NikolasM
Зарегистрирован: 2016-09-09
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Меню программ на Python

Подскажите еще пожалуйста, можно ли в окне tkinter устроить зону, за которую можно перетаскивать само окно?

Офлайн

#8 Сен. 10, 2016 15:57:23

NikolasM
Зарегистрирован: 2016-09-09
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Меню программ на Python

 from tkinter import * #ссылка на библиотеку GUI
root = Tk() #основное окно
def onFocusOut(event): #событие вне фокуса
    root.destroy()
def init(): 
    root["bg"] = "white" #цвет
    width = 700 #ширина
    height = 500 #высота
    x = root.winfo_screenwidth()/2 - width/2 #получения данных разрешения ширина
    y = root.winfo_screenheight()/2 - height/2 #получения данных разрешения высота
    root.geometry('%dx%d+%d+%d' % (width, height, x, y)) #само центрирование
    root.overrideredirect(True) #отключение компоновки
    root.bind('<FocusOut>', onFocusOut)
if __name__ == '__main__':
    init()
root.mainloop()
Зацените - окно уже по центру. Правда не закрывается при кликании вне него, в чем проблема???
—————————————————–

Вроде нашел проблему - при употреблении overrideredirect отключается компоновка и само поняти дефокус тоже. С компоновкой все работает. Буду искать решение вопроса.

Отредактировано NikolasM (Сен. 10, 2016 17:16:54)

Офлайн

#9 Сен. 10, 2016 22:20:06

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Меню программ на Python

NikolasM
но остается при этом сторонней разработкой, а я пока хочу узнать функционал встроенной
я счаз открою вам не тайну - tkinter это обертка над TK/TCL библиотеками, а не собственный питонячий графический интерфейс. Да да там есть расширенные функции исключительно для питона, но сути это не меняет.
Я к тому что вы как то уж странно подошли к определению критерия выбора



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#10 Сен. 10, 2016 22:57:01

NikolasM
Зарегистрирован: 2016-09-09
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Меню программ на Python


JOHN_16
я счаз открою вам не тайну - tkinter это обертка над TK/TCL библиотеками, а не собственный питонячий графический интерфейс. Да да там есть расширенные функции исключительно для питона, но сути это не меняет.
Я к тому что вы как то уж странно подошли к определению критерия выбора

Да как бы лукавить не буду - сыграл немного фактор лени. pyQt - надо еще поставить, да знаю в репозиториях есть. Но это малая доля выбора. У меня почему то сложилось мнение о более производительности и стабильности tkinter чем Qt - может миф, не знаю. Раньше немного знакомился с Qt - как то не очень, с тех пор появилась уверенность в том, что лучше начинать программировать без визуального редактора… а там и с ним без проблем разберешься.
Критерий прост до простоты - что было в комплекте с Python3, с того и начал. Тем более tkinter-а хватит для такой программы полностью. Там дальше уже по серьезней пойдет - алгоритмы для фреймов. Вот там программирование - а GUI сотворить не так уж и сложно если подучить код. Хотя я сейчас даже не могу сделать фреймы с горизонтальной компановкой - все уроки какие то вертикальные, и вот не закрывается окно при FocusOut если отключить компоновку… еще время и на WIP немного тратится - доделываю косяки и оптимизирую.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version