Tidak dapat memindahkan tombol di tcl/tk

Snapshot GUI Dalam kode ini saya ingin memindahkan new_button ke paling kanan. Tapi setelah mengubah baris, kolom, rentang kolom juga, tetap di sana saja. Perubahan apa saja yang diperlukan dalam kode.

ttk::frame .c
.c configure -borderwidth 7 -relief groove -padding "200 25"
button .c.cancle -text cancel -command {destroy .}
ttk::label .c.l -text "yash"
ttk::checkbutton .c.one -text One -variable oe -onvalue 1
ttk::button .c.ok -text Okay -command sp12
button .c.lop -text New_button

grid .c -column 0 -row 4
grid .c.l -column 0 -row 1 -columnspan 2
grid .c.one -column 0 -row 3 -columnspan 2
grid .c.ok -column 3 -row 3 -columnspan 2
grid .c.cancle -column 9 -row 3 -columnspan 2
grid .c.lop -column 30 -row 10 -rowspan 10 -columnspan 15 -sticky w

person Yash    schedule 31.08.2015    source sumber
comment
Tata letak apa yang ingin Anda buat? Saya telah menjalankan kode Anda dan saya tidak yakin seperti apa tampilannya…   -  person Donal Fellows    schedule 31.08.2015
comment
Hapus bantalan pada bingkai .c.   -  person Jerry    schedule 31.08.2015
comment
ya @Jerry, tapi itu mengurangi ukuran jendela ...bagaimana saya bisa memperbesar bingkai (jendela) ...yaitu jika saya memberikan tombol kolom 30, itu harus jauh dari tombol kolom 9.   -  person Yash    schedule 01.09.2015
comment
@Yash Bisakah Anda mengunggah gambar apa yang ingin Anda dapatkan sebagai hasilnya? Gambarlah dengan cat atau semacamnya, tetapi sulit untuk memahami apa yang Anda cari tanpa informasi lebih lanjut.   -  person Jerry    schedule 01.09.2015
comment
@Jerry mengunggah ..beri tahu saya jika Anda tidak dapat mengakses   -  person Yash    schedule 01.09.2015


Jawaban (1)


grid bisa jadi rumit. Jika tidak ada widget pada salah satu baris atau kolom, maka baris dan/atau kolom tersebut dianggap memiliki lebar 0 dan/atau tinggi 0. Dengan demikian menambah nomor baris dan/atau nomor kolom tidak akan mengubah apapun.

Dalam skrip Anda saat ini, padding pada bingkai mencegah widget di dalam kisi .c berada di dekat batas .c (padding menambahkan 'lapisan' ruang antara batas dan widget di dalamnya). Jadi ini adalah hal pertama yang harus dihapus. Setelah selesai, widget akan kehilangan ukurannya, karena ukuran widget bergantung pada ukuran widget di dalamnya.

Jadi solusinya di sini adalah dengan menentukan ukuran minimum:

ttk::frame .c
.c configure -borderwidth 7 -relief groove
wm minsize . 656 135  # Set a minimum size here
button .c.cancle -text cancel -command {destroy .}
ttk::label .c.l -text "yash"
ttk::checkbutton .c.one -text One -variable oe -onvalue 1
ttk::button .c.ok -text Okay -command sp12
button .c.lop -text New_button

# I cleaned up the columns
grid .c -row 0 -column 0 -sticky nsew # make it anchor all positions
grid .c.l -column 1 -row 1
grid .c.one -column 1 -row 2
grid .c.ok -column 2 -row 2
grid .c.cancle -column 3 -row 2
grid .c.lop -column 4 -row 3 -sticky se # make it anchor at south east position

# make the .c grid fit to the . window
grid columnconfigure . all -minsize 635 -weight 1
grid rowconfigure . all -weight 1
# force column before column 1 and row before row 1 to have some specific size
grid columnconfigure .c 0 -minsize 200
grid rowconfigure .c 0 -minsize 30
# make the last cell fill any spaces after it, if available
grid columnconfigure .c 4 -weight 1
grid rowconfigure .c 4 -weight 1

Hasil:

masukkan deskripsi gambar di sini

person Jerry    schedule 01.09.2015