Форум сайта python.su
Как выставить в root.geometry переменные?
from tkinter import *
root = Tk()
h,v = 600,450
root.geometry("600x450")
root.mainloop()
Офлайн
Вот так как-нибудь:
import Tkinter
root = Tkinter.Tk()
x, y = 400, 300
a = str(x) + "x" + str(y)
root.geometry(a)
root.mainloop()
Офлайн
Такое сгодится?
def FormGeomString(root,xR,yR):
if (xR<=0 or xR>=1 or yR<=0 or yR>=1):return ""
ScrW = root.winfo_screenwidth();ScrH = root.winfo_screenheight()
width = round(ScrW*xR);
height = round(ScrH*yR);
x = (ScrW-width)//2
y = (ScrH-height)//2
return ('%dx%d+%d+%d' % (width,height,x,y))
from Tkinter import *
root = Tk()
GString = FormGeomString(root,0.5,0.5)
root.geometry(GString)
root.resizable(False,False)
root.mainloop()
Офлайн
Gunjy и Evgeny спасибо.
Evgeny Ваш пример слишком для меня сложен пока. Я воспользовался первым.
П.С. Для меня важно понимать код а не просто копировать “чтоб заработало”. Надеюсь настанет то время, когда смогу не только адекватно прочесть его но и написать =)
Отредактировано (Июнь 24, 2010 23:50:00)
Офлайн
>>> import tkinter
>>> w = tkinter.Tk()
>>> x, y = 100, 100
>>> w.geometry("%dx%d" % (x, y))
''
>>> w.mainloop()
Офлайн
Не верю что пример автора не работает.
Второй пример полностью копирует пример автора. Зачем спрашивается нужна такая помощь?
Ошибка гласит - вы передаёте 3 аргумента, а надо два. Первый это конечно же self, который передаётся сам по себе. А второй это строка.
Можете перепроверить. Ваш код работает.
Видать вы до этого написали что то вроде root.geometry(h, v), или root.geometry(“%sx%s”, (h, v)) и просто забыли об этом.
Офлайн