2011-07-29 4 views
0

Я не уверен, о том, как сформулировать это ...Resize Tkinter Окно справа (питон)

У меня есть окно Tkinter, и мне нужно, чтобы скрыть половину этого окна при нажатии кнопки. Тем не менее, мне нужно, чтобы левая часть была скрыта, так что теперь размер окна равен половине размера, который он изначально был:
и показывает правую половину исходного окна.

Все функции изменения размера Tkinter от слева сторона окна. Изменение значений геометрии может отображать только слева сторона, прячась справа; Мне нужен обратный.

Кто-нибудь знает, как это сделать?

(Я не хочу, чтобы пользователь перетаскивал границу окна, Мне нужна кнопка для ее автоматизации).


Характеристики:

  • Python 2.7.1
  • TkInter
  • для Windows 7
+0

Проблема в том, что вы не знаете, как изменить размер окна, или это проблема, которую вы хотите скрыть виджеты, находящиеся в левой части окна (что приводит к сокращению окна)?Вам нужно скрыть целые виджеты или просто часть некоторых виджетов? –

+0

Я предполагаю, что я эстетически намерен скрыть половину виджетов и сжать окно, но я не намеревался использовать такой метод (поскольку у меня много виджетов). Я действительно надеялся на удобный метод для правого закрепленного изменения размера, но похоже, что нет простого решения (которое я нахожу очень странным). –

ответ

1

Это делает то, что вы хотите?

import Tkinter as Tk #tkinter 

def toggle(): 
    if frame1.winfo_ismapped(): 
     frame1.grid_remove() 
    else: 
     frame1.grid() 

root = Tk.Tk() 
root.geometry('-450+250') 
frame1 = Tk.Frame(root, width=200, height=100, bg='red') 
frame1.grid(row=0, column=0) 
frame2 = Tk.Frame(root, width=200, height=100, bg='blue') 
frame2.grid(row=0, column=1) 
Tk.Button(root, text='toggle', command=toggle).grid(row=1, column=1) 

root.mainloop() 
+0

Да на самом деле, я думаю, это будет! Есть несколько небольших проблем, которые возникают из-за формата виджетов, но я думаю, что это приемлемое решение. –

2

Вы можете использовать правую привязанные спецификации геометрии, используя знак минус справа Место:

123x467-78+9

Однако я не знаю, будет ли это работать в Windows (приведенный выше трюк X11, и я не знаю, реализовано ли оно на уровне совместимости с платформой); вам, возможно, придется просто вычислить новую позицию с учетом прогнозируемого размера левой стороны и использовать ее.

+0

К сожалению, похоже, что вы можете использовать минус для позиции окна, а не его размер. (Попытка сделать root.geometry ('- 800x800') дает ошибку: «Bad Geometry Specifier».) –

+0

@ Anti: Отрицательная ширина (или высота) не имеет смысла, учитывая, что я не практикующий Чистый математик. –

+0

Я думал, что-то похожее. Как я могу изменить размер окна с помощью привязки вообще? :( –

0

Мой учитель IT имел предложение:

Добавить в полосы прокрутки вне поля зрения,
и после изменения размеров окна корня,
сила полосы прокрутки для прокрутки весь путь направо.

(Так что я предполагаю, что я должен был бы создать холст,
вьючные все мои виджеты в кадр,
пакет рамки на холст, настроить холст с скроллингом?)

I Не знаю, есть ли функция, чтобы установить текущее положение полосы прокрутки (таким образом, xview окна),
, но я бы предположил, что есть.

Имейте это в виду, но это выглядит многообещающе.

Спасибо за предложения!