Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #75571
| Path | csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!news.albasani.net!rt.uk.eu.org!newsfeed.xs4all.nl!newsfeed3a.news.xs4all.nl!xs4all!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail |
|---|---|
| Return-Path | <python-python-list@m.gmane.org> |
| X-Original-To | python-list@python.org |
| Delivered-To | python-list@mail.python.org |
| X-Spam-Status | OK 0.001 |
| X-Spam-Evidence | '*H*': 1.00; '*S*': 0.00; 'column': 0.07; 'tkinter': 0.07; 'subject:help': 0.08; 'buttons': 0.09; 'grid': 0.09; 'received:80.91': 0.09; 'received:80.91.229': 0.09; 'received:gmane.org': 0.09; 'received:list': 0.09; 'screen.': 0.09; 'def': 0.12; 'jan': 0.12; 'wrote': 0.14; "'0'": 0.16; '0),': 0.16; '1),': 0.16; '2),': 0.16; 'buttons,': 0.16; 'calculator': 0.16; 'cmd': 0.16; 'labelled': 0.16; 'lambda': 0.16; 'lambda:': 0.16; 'loop.': 0.16; 'pressing': 0.16; 'received:80.91.229.3': 0.16; 'received:plane.gmane.org': 0.16; 'reedy': 0.16; 'subject:Tkinter': 0.16; 'tk()': 0.16; 'fix': 0.17; 'wrote:': 0.18; 'bit': 0.19; 'app': 0.19; 'import': 0.22; 'header:User- Agent:1': 0.23; 'number)': 0.24; 'why.': 0.24; 'non': 0.24; 'sort': 0.25; 'code:': 0.26; 'gets': 0.27; 'header:X-Complaints- To:1': 0.27; 'header:In-Reply-To:1': 0.27; 'tried': 0.27; 'idea': 0.28; 'label': 0.30; 'code': 0.31; "skip:' 10": 0.31; 'stuff': 0.32; 'skip:# 10': 0.33; 'basic': 0.35; 'but': 0.35; 'there': 0.35; 'entry': 0.36; 'should': 0.36; 'changing': 0.37; 'half': 0.37; 'button': 0.38; 'window': 0.38; 'whatever': 0.38; 'to:addr :python-list': 0.38; 'pm,': 0.38; 'does': 0.39; 'received:71': 0.39; 'sure': 0.39; 'to:addr:python.org': 0.39; 'received:org': 0.40; 'august': 0.61; 'skip:t 30': 0.61; 'numbers': 0.61; 'show': 0.63; 'telephone': 0.63; 'skip:n 10': 0.64; 'more': 0.64; 'total': 0.65; 'here': 0.66; 'bottom': 0.67; "'2'": 0.84; "'3'": 0.84; 'layout.': 0.84; 'modify.': 0.84; 'pad': 0.84; 'received:fios.verizon.net': 0.84; 'mean.': 0.91; 'thing,': 0.91 |
| X-Injected-Via-Gmane | http://gmane.org/ |
| To | python-list@python.org |
| From | Terry Reedy <tjreedy@udel.edu> |
| Subject | Re: Tkinter grid autosize help |
| Date | Sat, 02 Aug 2014 22:16:40 -0400 |
| References | <60f53f24-7ce7-48e5-9fed-7d9ac8841b7f@googlegroups.com> <bfd8ce20-b31f-4b32-a286-5efece366b73@googlegroups.com> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=UTF-8; format=flowed |
| Content-Transfer-Encoding | 7bit |
| X-Gmane-NNTP-Posting-Host | pool-71-175-90-87.phlapa.fios.verizon.net |
| User-Agent | Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 |
| In-Reply-To | <bfd8ce20-b31f-4b32-a286-5efece366b73@googlegroups.com> |
| X-BeenThere | python-list@python.org |
| X-Mailman-Version | 2.1.15 |
| Precedence | list |
| List-Id | General discussion list for the Python programming language <python-list.python.org> |
| List-Unsubscribe | <https://mail.python.org/mailman/options/python-list>, <mailto:python-list-request@python.org?subject=unsubscribe> |
| List-Archive | <http://mail.python.org/pipermail/python-list/> |
| List-Post | <mailto:python-list@python.org> |
| List-Help | <mailto:python-list-request@python.org?subject=help> |
| List-Subscribe | <https://mail.python.org/mailman/listinfo/python-list>, <mailto:python-list-request@python.org?subject=subscribe> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.12565.1407032224.18130.python-list@python.org> (permalink) |
| Lines | 160 |
| NNTP-Posting-Host | 2001:888:2000:d::a6 |
| X-Trace | 1407032224 news.xs4all.nl 2867 [2001:888:2000:d::a6]:44992 |
| X-Complaints-To | abuse@xs4all.nl |
| Xref | csiph.com comp.lang.python:75571 |
Show key headers only | View raw
On 8/2/2014 6:53 PM, Nicholas Cannon wrote:
> On Saturday, August 2, 2014 10:38:28 PM UTC+8, Nicholas Cannon wrote:
>> So i have a basic calculator program and i have a label that i want to go across
>> the top to show the numbers and stuff like on a normal calculator.
The buttons are labelled already with numbers. Whatever stuff you meant,
is not diplayed.
>> The only way i can make the buttons look neat and then when i keep
>> pressing one the label gets larger and then half the buttons
>> move out of the screen.
Since nothing gets bigger, I have no idea what you mean.
>> I cant seem to fix this i have tried columnspan, columnconfigure
>> and heaps of other stuff and non works it always expands.
>> is there a way i can stop the grid from expanding?
If I shrink the window horizontally, the minimun size is 3 columns.
If I shrink vertically, bottom buttons disappear. I am not sure why.
> ok here is the code:
Only some of it.
from tkinter import *
def add(*args): print(args)
> #window setup
> main = Tk()
> main.title('Calculator')
> main.geometry('300x350')
> main.resizable()
>
> app = Frame(main)
> app.grid()
> app.columnconfigure(0, weight=500)
> app.columnconfigure(1, weight=500)
You left out column 2.
>
> #number view label
> number = ' '
> numberView = Label(app, text= number)
> numberView.grid(row=0, column=0, columnspan=100)
What you need for a changing label is
number = StringVar()
number.set('')
numberView = Label(app, textvariable=number)
but see below
> #Num Pad Buttons below
> num1 = '1'
> button1 = Button(app, text='1', command= lambda: add(num1), width=5)
> button1.grid(row=1, column=0)
You are using the braindead telephone keypad layout.
Calculators and number keypads have the more sensible layout
7 8 9
4 5 6
1 2 3
0
> num2 = '2'
> button1 = Button(app, text='2', command= lambda: add(num2), width=5)
> button1.grid(row=1, column=1)
>
> num3 = '3'
> button1 = Button(app, text='3', command= lambda: add(num3), width=5)
> button1.grid(row=1, column=2)
>
> num4 = '4'
> button1 = Button(app, text='4', command= lambda: add(num4), width=5)
> button1.grid(row=2, column=0)
>
> num5 = '5'
> button1 = Button(app, text='5', command= lambda: add(num5), width=5)
> button1.grid(row=2, column=1)
>
> num6 = '6'
> button1 = Button(app, text='6', command= lambda: add(num6), width=5)
> button1.grid(row=2, column=2)
>
> num7 = '7'
> button1 = Button(app, text='7', command= lambda: add(num7), width=5)
> button1.grid(row=3, column=0)
>
> num8 = '8'
> button1 = Button(app, text='8', command= lambda: add(num8), width=5)
> button1.grid(row=3, column=1)
>
> num9 = '9'
> button1 = Button(app, text='9', command= lambda: add(num9), width=5)
> button1.grid(row=3, column=2)
>
> num0 = '0'
> button1 = Button(app, text='0', command= lambda: add(num0), width=5)
> button1.grid(row=4, column=1)
)
>
This sort of repetitious code is crying for a loop. For one thing, if
you want to change the buttons, there should only be one Button call to
modify. Since I am still learning to write tkinter myself, I wrote the
following, which I suspect does what you wanted and a bit more.
from tkinter import *
main = Tk()
main.title('Calculator')
main.geometry('300x350')
#main.resizable() # does nothing
app = Frame(main)
app.grid()
total = IntVar()
total.set(0)
entry = StringVar()
entry.set('')
Label(app, text='Total').grid(row=0, column=0)
Label(app, textvariable=total).grid(row=0, column=1, columnspan=3)
Label(app, text='Entry').grid(row=1, column=0)
Label(app, textvariable=entry).grid(row=1, column=1, columnspan=3)
def append(digit):
entry.set(entry.get() + digit)
def add():
total.set(total.get() + int(entry.get()))
entry.set('')
def sub():
total.set(total.get() - int(entry.get()))
entry.set('')
header_rows = 2
for num, r, c in (
('7', 0, 0), ('8', 0, 1), ('9', 0, 2),
('4', 1, 0), ('5', 1, 1), ('6', 1, 2),
('1', 2, 0), ('2', 2, 1), ('3', 2, 2),
('0', 3, 0), ('+', 3, 1), ('-', 3, 2),):
cmd = {'+':add, '-':sub}.get(num, lambda num=num: append(num))
b = Button(app, text=num, command=cmd, width=5)
b.grid(row=header_rows+r, column=c)
main.mainloop()
--
Terry Jan Reedy
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Tkinter grid autosize help Nicholas Cannon <nicholascannon1@gmail.com> - 2014-08-02 07:38 -0700
Re: Tkinter grid autosize help MRAB <python@mrabarnett.plus.com> - 2014-08-02 16:33 +0100
Re: Tkinter grid autosize help Mark Lawrence <breamoreboy@yahoo.co.uk> - 2014-08-02 17:14 +0100
Re: Tkinter grid autosize help Nicholas Cannon <nicholascannon1@gmail.com> - 2014-08-02 15:53 -0700
Re: Tkinter grid autosize help Terry Reedy <tjreedy@udel.edu> - 2014-08-02 22:16 -0400
Re: Tkinter grid autosize help Rick Johnson <rantingrickjohnson@gmail.com> - 2014-08-02 19:24 -0700
Re: Tkinter grid autosize help Terry Reedy <tjreedy@udel.edu> - 2014-08-02 23:22 -0400
Re: Tkinter grid autosize help Nicholas Cannon <nicholascannon1@gmail.com> - 2014-08-02 19:36 -0700
csiph-web