Saya mencoba membuat sesuatu yang dikendalikan oleh Python Shell GUI.
Satu-satunya hal adalah, saya tidak tahu bagaimana membuat hal input / output keseluruhan. Saya hanya ingin dapat mengetikkan input, menjalankan perintah python dan memberikan output dari perintah python. Saya tahu bahwa IDLE dibuat di Tkinter, jadi itu menggunakan widget?
Ini benar-benar hanya "ketik input, tampilkan keluaran" hal.
Saya sudah mencoba mencarinya tetapi sepertinya sebagian besar hasilnya berkaitan dengan baris perintah, yang bukan yang saya cari. Satu-satunya pertanyaan lain yang persis seperti pertanyaan saya bukanlah yang ada dalam pikiran saya juga. Saya juga mencoba menempatkan kode sumber untuk IDLE tetapi tidak dapat menemukan apa yang saya cari.
Saya telah menemukan beberapa jawaban yang berfungsi untuk Linux tetapi saya menggunakan Windows 10 ...
Saya perlu "shell" berada di Tkinter karena di satu sisi layar akan ada sesuatu yang lain yang terhubung ke output perintah.
Adakah yang tahu widget yang digunakan untuk membuat shell Python yang sangat sederhana?
sumber
Jawaban:
Simple Python Shell / Terminal / Command-Prompt
type input
,show output
" hal. ************************Skrip python yang diberikan di atas memiliki hierarki berikut seperti yang diberikan;
Alur kerja:
Alur kerja dasar untuk kode di atas diberikan sebagai berikut;
def welcome_note():...
Termasuk Label yang akan ditampilkan di luar badan teks.def get_text(self):...
Melakukan dua operasi; ** Dapatkan teks dari badan teks ** & ** Set Output di Kotak Masuk **.def store_commands(self, command):...
Gunakan untuk menyimpan variabel ke dalam file.def get_stored_commands(self):
... Dapatkan variabel disimpan dalam file.def check_if_file_empty():
... Periksa Ukuran file.def run_commands(self, command):...
Metode ini bertindak sebagai kompiler python yang mengambil perintah, melakukan pemrosesan dan menghasilkan output untuk perintah yang diberikan. Untuk menjalankan perintah, saya akan merekomendasikan untuk menggunakansubprocess-module
karena menyediakan fasilitas yang lebih kuat untuk memunculkan proses baru dan mengambil hasil mereka; Untuk menjalankan perintah-jendela menggunakan python termasuk berbagai pustaka builtin seperti;1. os ( detail ), 2. subproses ( detail ) dll.
Untuk checkout yang lebih baik digunakan, kunjungi referensi: subprocess- module lebih disukai daripada os-module .
def start_terminal(self):...
Metode ini hanya melibatkan fungsi untuk memulaitkinter
jendela sesi dan menunjukkan tata letak dasar untuk jendela input dan output.Workaroud:
Sederhana ini
tkinter GUI based python shell
melakukan fungsi sederhana sebagai windows-command-prompt. Untuk menjalankan perintah pythondirectly
di command-prompt tanpa berpindah ke terminal python, kami melakukannya sesederhana;Hasilnya akan sesederhana;
Demikian pula, untuk menjalankan lebih dari satu baris secara langsung pada waktu yang diberikan;
Hasilnya akan seperti;
Jadi gunakan ini
tkinter python shell
;Anda bisa menempatkan perintah sebagai;
atau seperti ini;
atau cukup sebaris perintah sebagai
Anda akan mendapatkan hasil yang sama.
sumber
input
,output
shell. Kerjanya seperti dasarpython kernel
. Ini hanya beroperasi pada yang ditempatkan di badan teks . Saya belum mengatur buffer atau cache memori untuk menyimpan riwayat variabel. Biarkan saya periksa dulu persyaratan ini di IDLE ini!Ini adalah shell sederhana yang terutama digunakan
exec()
untuk mengeksekusi pernyataan python dansubprocess.Popen()
untuk mengeksekusi perintah eksternal:Cukup masukkan pernyataan python normal:
Atau masukkan perintah shell:
Anda juga dapat menggunakan
Up
kunci untuk mengingat perintah terakhir.Harap dicatat bahwa jika Anda menjalankan perintah sistem yang membutuhkan input pengguna, shell akan membeku selama 5 detik (periode waktu habis digunakan
communicate()
).Anda dapat memodifikasi
on_key()
fungsi sesuai dengan kebutuhan Anda.Harap diingatkan juga bahwa menggunakan
exec()
bukanlah praktik yang baik.sumber
Saya telah mengimplementasikan shell python menggunakan
code.InteractiveConsole
untuk mengeksekusi perintah untuk proyek. Di bawah ini adalah versi yang disederhanakan, meskipun masih cukup lama karena saya telah menulis binding untuk kunci khusus (seperti Return, Tab ...) untuk berperilaku seperti di konsol python. Dimungkinkan untuk menambahkan lebih banyak fitur seperti pelengkapan otomatis dengan jedi dan sorotan sintaksis dengan pigmen.Ide utamanya adalah saya menggunakan
push()
metodecode.InteractiveConsole
untuk mengeksekusi perintah. Metode ini kembaliTrue
jika itu adalah perintah parsial, misalnyadef test(x):
, dan saya menggunakan umpan balik ini untuk memasukkan...
prompt, jika tidak, output ditampilkan dan>>>
prompt baru ditampilkan. Saya menangkap output menggunakancontextlib.redirect_stdout
.Juga ada banyak kode yang melibatkan tanda dan membandingkan indeks karena saya mencegah pengguna memasukkan teks ke dalam perintah yang sebelumnya dieksekusi. Idenya adalah bahwa saya membuat tanda 'input' yang memberitahu saya di mana awal prompt aktif dan dengan
self.compare('insert', '<', 'input')
saya bisa tahu kapan pengguna mencoba memasukkan teks di atas prompt aktif.sumber